c# - 在单个列表中获取重复的字段名称

标签 c# asp.net linq list

我有一个 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();

我看到你不会在同一组中Zenzen,所以你应该将你的GroupBy更改为:GroupBy (s => s.CarName.ToLower())

关于c# - 在单个列表中获取重复的字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749258/

相关文章:

javascript - 在内容占位符内设置 href id

c# - 网页上的富文本编辑器

c# - Azure Web 角色启动时 IIS Express 失败

asp.net - 如何处理 ASP.NET 动态数据中的并发控制?

c# - 无法从 xtragridview 获取点击行的数据

c# - 数据库恢复后, Entity Framework 有时无法识别过去的迁移

c# - 重新分配 XmlDocument

javascript - 回发后文本框失去值(value)

c# - 使用 LINQ 和 C# 从分组列表中获取最多 5 个项目

linq - 使用 LINQ 与 WMI 交互的首选方式是什么