如何从C#中的列表中删除非重复项

Ton*_*Nam 14 c# linq

我想要做相反的事是这里

我有一个列表,我知道如何删除重复项.但是我希望有一个选项,用户可以选择要保留的副本.一些查询问题我可以有一个只显示重复项的列表.就像是:

让我们说我的清单是:

"tom""bob""Frank""bob""Lacey""Frank"

我知道,如果我使用不同的方法,我会得到:

"汤姆""鲍勃""弗兰克""莱西"

我不知道我必须使用什么方法来获取:

"bob""bob""frank""frank"

或得到

"bob""frank"

因为那些是重复的.

Bro*_*ass 22

您可以使用GroupBy过滤掉仅出现一次的项目,然后将其余项目展平回列表:

var resultList = list.GroupBy(x => x)
                     .Where(g => g.Count() > 1)
                     .SelectMany(g => g)
                     .ToList();
Run Code Online (Sandbox Code Playgroud)

  • 另外,对于IEnumerable的一般情况,当有大量重复时,你可以使用`.Where(g => g.Skip(1).Any())`而不是上面的`Where`条件. (2认同)