【问题标题】:Get Duplicate field Name in single list在单个列表中获取重复的字段名称
【发布时间】:2013-04-01 18:27:36
【问题描述】:

我有一个带有属性的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&lt;T&gt; 获取重复项?

【问题讨论】:

    标签: c# asp.net linq list


    【解决方案1】:

    添加 Where 子句以仅获取具有超过 1 个元素的组和 SelectMany 以将结果扁平化为一个列表:

    var duplications = lstcar.GroupBy(s => s.CarName)
                             .Where(g => g.Count() > 1)
                             .SelectMany(g => g)
                             .ToList();
    

    我看你不会Zenzen在同一个组,所以你应该把你的GroupBy改成:GroupBy(s =&gt; s.CarName.ToLower())

    【讨论】:

    • 非常感谢!!做的工作:)
    猜你喜欢
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多