我需要從dictonary刪除指定的項目從Dictonary項目..如何刪除在C#中使用LINQ
的dictonary就像
dict["Key1"]="Value1"
dict["Key2"]="Value2"
dict["Key3"]="Value3"
dict["Key4"]="Value2"
如何在另一個項目中刪除該項目具有使用LINQ
在此先感謝
我需要從dictonary刪除指定的項目從Dictonary項目..如何刪除在C#中使用LINQ
的dictonary就像
dict["Key1"]="Value1"
dict["Key2"]="Value2"
dict["Key3"]="Value3"
dict["Key4"]="Value2"
如何在另一個項目中刪除該項目具有使用LINQ
在此先感謝
這裏我測試的解決方案:
dict.GroupBy(x => x.Value, x => x.Key)
.Where(x => x.Count() > 1)
.SelectMany(x => x.Skip(1))
.ToList().ForEach(x => dict.Remove(x))
這個答案其實很聰明。不知道有關「選擇此」參數的GroupBy。 – 2010-06-30 07:05:37
檢查原單由@喬恩飛碟雙向回答:C#: Remove duplicate values from dictionary?
var uniqueValues = myDict.GroupBy(pair => pair.Value)
.Select(group => group.First())
.ToDictionary(pair => pair.Key, pair => pair.Value);
var dupKeys = dict.GroupBy(innerD => innerD.Value)
.Where(mergedByValue => mergedByValue.Count() > 1)
.Select(mergedByValue => mergedByValue.OrderByDescending(m => m.Key).First().Key);
dict.Where(d => dupKeys.Contains(d.Key)).ToList()
.ForEach(d => dict.Remove(d.Key));
這是假設你想要的最後重複刪除,其中最後被定義爲最後的序數字符串值。
如果你想刪除所有重複,你dupKeys改成這樣:
var dupKeys = dict.GroupBy(innerD => innerD.Value)
.Where(mergedByValue => mergedByValue.Count() > 1).Dump()
.SelectMany(mergedByValue => mergedByValue.Select(m => m.Key));
你要什麼要刪除的項目,與密鑰2項或有Key4的那個? – 2010-06-30 06:41:34
檢查更新後的答案 – 2010-06-30 06:42:34
@ David_001:Key 4 – 2010-06-30 06:51:23