我有以下字典。
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;
}
如何有效摆脱每个词典列表中的潜在重复项?
答案 0 :(得分: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();
}
请注意,此处使用ToList
可避免迭代正在修改的集合的视图。如果没有这个,就会抛出InvalidOperationException
。
答案 1 :(得分:1)
怎么样?
foreach (var kvp in dictSubjects.ToList())
dictSubjects[kvp.Key] = kvp.Value.Distinct().ToList();