C# LINQ查找List中的重复项
解决这个问题最简单的方法是根据元素的值进行分组,如果组中有多个元素,则选择一个代表来解决。在 LINQ 中,这可以转换为:
var query = lst.GroupBy(x => x) .Where(g => g.Count() > 1) .Select(y => y.Key) .ToList();
如果你想知道元素被重复了多少次,可以使用:
var query = lst.GroupBy(x => x) .Where(g => g.Count() > 1) .Select(y => new { Element = y.Key, Counter = y.Count() }) .ToList();
这将返回一个匿名类型的 List,每个元素都有 Element 和 Counter 两个属性,可检索所需的信息。
最后,如果你在寻找一个字典,你可以使用:
var query = lst.GroupBy(x => x) .Where(g => g.Count() > 1) .ToDictionary(x => x.Key, y => y.Count());
这将返回一个字典,其 key 为元素,值为其重复的次数。