我有一个从用户选择中填充的UI。我字典的键只是一个简单的字符串,但它可能对应于多个字符串条目(列表)。
如果用户做出不同的选择,则我应该能够浏览该词典,对于相同的字符串键,请检查用户刚刚在我的列表中做出的选择中的字符串是否已经存在,如果存在,则不添加它。如果不存在,则添加到已经存在的列表中。
我从以下代码开始:
var checkedItems = listViewColumns.CheckedItems;
if (checkedItems != null)
{
foreach (ListViewItem item in checkedItems)
{
if ((m_ColumnAssociations.ContainsKey(item.Text))
{
var correspondingMatrices = m_ColumnAssociations.Where(kvp =>
kvp.Value.Contains(dgvMatrices.SelectedCells[0].Value.ToString())).
Select(kvp => kvp.Key);
}
}
}
listViewColumns
列表视图在哪里,其中包含进入字典键的条目,这m_ColumnAssociations
是我的字典。我将其他条目添加到我的代码中,因此这部分已排序。我的问题是在这里进行的检查。
在我目前的尝试中,我现在仅尝试获取一个值(correspondingMatrices
),但是此语句返回了一个IEnumerable。任何帮助,将不胜感激。
如果我正确理解您的问题,则需要以下各项:
var checkedItems = listViewColumns.CheckedItems;
if (checkedItems != null)
{
foreach (ListViewItem item in checkedItems)
{
List<string> itemsForAdding = // some items that needs to be added
// check if dictionary has the key
if (m_ColumnAssociations.ContainsKey(item.Text))
{
var listFromDictionary = m_ColumnAssociations[item.Text];
foreach(var itemForAdding in itemsForAdding)
{
if(!listFromDictionary.Contains(itemForAdding)
{
listFromDictionary.Add(itemForAdding);
}
}
}
}
}
或者您可以使用Distinct
方法:
...
List<string> itemsForAdding = // some items that needs to be added
// check if dictionary has the key
if (m_ColumnAssociations.ContainsKey(item.Text))
{
var listFromDictionary = m_ColumnAssociations[item.Text];
// add the whole list
listFromDictionary.AddRange(itemsForAdding);
// remove the duplicates from the list and save it back to dictionary
m_ColumnAssociations[item.Text] = listFromDictionary.Distinct();
}
...
希望对你有帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句