Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C语言中从列表中删除非重复项#_C#_Linq - Fatal编程技术网

C# 如何在C语言中从列表中删除非重复项#

C# 如何在C语言中从列表中删除非重复项#,c#,linq,C#,Linq,我想做与此相反的事情 我有一个列表,我知道如何删除重复项。但是我想有一个选项,用户可以选择保留哪个副本。有些查询查询我可以有一个只显示重复项的列表。比如: 假设我的清单是: “汤姆”“鲍勃”“弗兰克”“鲍勃”“莱西”“弗兰克” 我知道如果我使用distinct方法,我会得到: “汤姆”“鲍勃”“弗兰克”“莱西” 我不知道我要用什么方法才能得到: “鲍勃”“鲍勃”“弗兰克”“弗兰克” 或者 “鲍勃”“弗兰克” 因为这些都是重复的 您可以使用GroupBy筛选出只出现一次的项目,然后将剩余的项目展平

我想做与此相反的事情

我有一个列表,我知道如何删除重复项。但是我想有一个选项,用户可以选择保留哪个副本。有些查询查询我可以有一个只显示重复项的列表。比如:

假设我的清单是:

“汤姆”“鲍勃”“弗兰克”“鲍勃”“莱西”“弗兰克”

我知道如果我使用distinct方法,我会得到:

“汤姆”“鲍勃”“弗兰克”“莱西”

我不知道我要用什么方法才能得到:

“鲍勃”“鲍勃”“弗兰克”“弗兰克”

或者

“鲍勃”“弗兰克”


因为这些都是重复的

您可以使用
GroupBy
筛选出只出现一次的项目,然后将剩余的项目展平到列表中:

var resultList = list.GroupBy(x => x)
                     .Where(g => g.Count() > 1)
                     .SelectMany(g => g)
                     .ToList();

我需要通过一个特定的属性对它们进行比较,在此之前,我刚刚将您的查询代理玻璃修改为

var resultList = itemsThatNeedToBeAdded.GroupBy(x => x.property1)
                     .Where(g => g.Count() > 1 )
                     .SelectMany(g => g)
                     .ToList();

按姓名分组,计数>1换句话说,当你点击显示重复歌曲的选项时,我想做与iTunes相同的事情。@Joe:你的答案与问题完全匹配。你为什么不把它作为一个答案发布,让OP批准它?@Sylverdrag我对LINQ不太了解,无法提供足够的答案。同样,对于IEnumerable的一般情况,如果有大量重复项,你可以使用
。其中(g=>g.Skip(1).Any())
而不是上面的
Where
条件。为什么在Where条件之后需要选择many?我是Linq的新手,请帮助我理解这一点。@Sandeep:SelectMany将列表“展平”为单个列表,其中包含原始列表中包含的所有元素