C# 如何在C中使用LINQ从口述记录中删除项目#
我需要从口述中删除一个特定的项目 口述语就像C# 如何在C中使用LINQ从口述记录中删除项目#,c#,linq,C#,Linq,我需要从口述中删除一个特定的项目 口述语就像 dict["Key1"]="Value1" dict["Key2"]="Value2" dict["Key3"]="Value3" dict["Key4"]="Value2" 如果另一项具有相同的值,如何使用LINQ删除该项 提前感谢您需要使用。您需要使用。检查@Jon Skeet的原始答案: 通过@Jon Skeet检查原始答案: 这假定您希望删除最后一个重复项,其中last定义为最后一个序号字符串
dict["Key1"]="Value1"
dict["Key2"]="Value2"
dict["Key3"]="Value3"
dict["Key4"]="Value2"
如果另一项具有相同的值,如何使用LINQ删除该项
提前感谢您需要使用。您需要使用。检查@Jon Skeet的原始答案:
通过@Jon Skeet检查原始答案: 这假定您希望删除最后一个重复项,其中last定义为最后一个序号字符串值 如果要删除所有重复项,请将DupKey更改为:
var dupKeys = dict.GroupBy(innerD => innerD.Value)
.Where(mergedByValue => mergedByValue.Count() > 1).Dump()
.SelectMany(mergedByValue => mergedByValue.Select(m => m.Key));
这假定您希望删除最后一个重复项,其中last定义为最后一个序号字符串值
如果要删除所有重复项,请将DupKey更改为:
var dupKeys = dict.GroupBy(innerD => innerD.Value)
.Where(mergedByValue => mergedByValue.Count() > 1).Dump()
.SelectMany(mergedByValue => mergedByValue.Select(m => m.Key));
这里是我的测试解决方案:
dict.GroupBy(x => x.Value, x => x.Key)
.Where(x => x.Count() > 1)
.SelectMany(x => x.Skip(1))
.ToList().ForEach(x => dict.Remove(x))
这里是我的测试解决方案:
dict.GroupBy(x => x.Value, x => x.Key)
.Where(x => x.Count() > 1)
.SelectMany(x => x.Skip(1))
.ToList().ForEach(x => dict.Remove(x))
@隐姓埋名:谢谢你。。。您是正确的,但我需要在创建dictional后删除重复项。&Pramodh,您是不正确的,distinct不会帮助您根据对象的属性筛选集合,并且仍然使用关联的属性。您是否检查了链接。这不是SQL独特的。您可以在现有词典上使用它。是吗?现在试着用它来获取所有不同值的键。@Graphain我同意它为您提供了轻松获取不同值的方法。@Incognito:谢谢。。。您是正确的,但我需要在创建dictional后删除重复项。&Pramodh,您是不正确的,distinct不会帮助您根据对象的属性筛选集合,并且仍然使用关联的属性。您是否检查了链接。这不是SQL独特的。您可以在现有词典上使用它。是吗?现在试着用它来获取所有不同值的键。@Graphain我同意它为您提供了一种轻松获取不同值的方法。您要删除哪个项目,带键2的项目还是带键4的项目?检查更新的答案您要删除哪个项目,带键2的项目或带键4的项目?检查更新的答案此答案实际上很聪明。我不知道GroupBy采用了“选择此”参数。这个答案其实很聪明。不知道接受“选择此”参数的GroupBy。