解决问题的最简单方法是根据元素的值对元素进行分组,然后如果组中有多个元素,则选择组的代表。在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();
这将返回一个匿名类型的列表,每个元素将具有属性元素和计数器,以检索您需要的信息。
最后,如果它是一个字典你正在寻找,你可以使用
var query = lst.GroupBy(x=>x)
.Where(g=>g.Count()>1)
.ToDictionary(x=>x.Key,y=>y.Count());
这将返回一个字典,您的元素作为键,以及它作为值重复的次数。