0

我有以下字典。

Dictionary<string, List<string>> dictSubjects = new Dictionary<string, List<string>>();

并且我正在尝试摆脱驻留在各个字典条目的每个列表实例中的潜在重复项。

这是我尝试过的,但是在只读的列表行中出现错误

foreach (var kvp in dictSubjects)
        {
            lstSubjectsNoDupes.Clear();
            for (int i = kvp.Value.Count - 1; i >= 0; i--)
            {
                if(lstSubjectsNoDupes.Contains(kvp.Value[i]))
                {
                   lstSubjectsNoDupes.Add(kvp.Value[i]); 
                }
            }
            kvp.Value = lstSubjectsNoDupes;

        }

我怎样才能有效地消除字典每个列表中的潜在重复项?

4

2 回答 2

3

如果您不太关心效率,最简单的方法是:

dictSubjects = dictSubjects.ToDictionary(pair => pair.Key,
                                         pair => pair.Value.Distinct().ToList());

或者,要更新现有字典:

foreach (var key in dictSubjects.Keys.ToList())
{
    dictSubjects[key] = dictSubjects[key].Distinct().ToList();
}

请注意使用ToListhere 以避免迭代正在修改的集合的视图。没有这个,InvalidOperationException被抛出。

于 2013-02-25T10:43:04.560 回答
1

关于什么

foreach (var kvp in dictSubjects.ToList())
    dictSubjects[kvp.Key] = kvp.Value.Distinct().ToList();
于 2013-02-25T10:43:34.397 回答