我有一个 List<Car> lstcar
具有属性
name-Zen id-1211 MfYear-1990 Color-black
name-Alto id-1521 MfYear-1990 Color-black
name-Nano id-9911 MfYear-1990 Color-black
name-800 id-1721 MfYear-1990 Color-black
name-zen id-711 MfYear-1990 Color-black
name-Swift id-9911 MfYear-1990 Color-black
name-Nano id-1081 MfYear-1990 Color-black
我想要基于名称的重复项的名称 例如:我想要“Zen , Nano”,但是当我这样做的时候
List<Car> dup = lstcar.GroupBy(s => s.CarName)
.Select(grp => grp.FirstOrDefault())
.OrderBy(s => s.CarName)
.ToList<Car>();
我得到 dup
有这个值
name-Zen id-1211 MfYear-1990 Color-black
name-Alto id-1521 MfYear-1990 Color-black
name-Nano id-9911 MfYear-1990 Color-black
name-800 id-1721 MfYear-1990 Color-black
name-Swift id-9911 MfYear-1990 Color-black
但是我想要
name-Zen id-1211 MfYear-1990 Color-black
name-Nano id-9911 MfYear-1990 Color-black
name-zen id-711 MfYear-1990 Color-black
name-Nano id-1081 MfYear-1990 Color-black
如何从一个 List<T>
中获取重复项?
最佳答案
添加 Where
子句以仅获取包含超过 1 个元素的组和 SelectMany
以将结果展平到一个列表中:
var duplications = lstcar.GroupBy(s => s.CarName)
.Where(g => g.Count() > 1)
.SelectMany(g => g)
.ToList();
我看到你不会在同一组中Zen和zen,所以你应该将你的GroupBy
更改为:GroupBy (s => s.CarName.ToLower())
关于c# - 在单个列表中获取重复的字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749258/