代码之家  ›  专栏  ›  技术社区  ›  BR75

删除一个项目

  •  -1
  • BR75  · 技术社区  · 7 年前

    我有一个包含对象的列表。对象的一个属性是from type date,如果一个组只包含一个项,我希望按日期分组并删除该项。

    我的列表已按日期排序:

    01.01.2018
    01.01.2018
    02.01.2018 <- this one should be removed
    03.01.2018
    03.01.2018
    

    我的linq方法如下:

    var listCleaned = myList.GroupBy(x => x.WHEN.ToShortDateString())
                            .TakeWhile(y => y.Count() > 1)
                            .SelectMany(i => i.ToList())
                            .ToList();
    

    我的问题是,2018年1月2日之后的所有项目都会被删除。

    2 回复  |  直到 7 年前
        1
  •  8
  •   Patrick Hofman Wahid Bitar    7 年前

    而不是 TakeWhile ,使用 Where 以下内容:

    var listCleaned = myList.GroupBy(x => x.WHEN.Date)
                            .Where(y => y.Count() > 1)
                            .SelectMany(i => i.ToList())
                            .ToList();
    
        2
  •  1
  •   Lucifer    7 年前

    你可以尝试另一种方法:

    在这里我 Where() 我添加了一个条件,即只选择那些 WHEN 日期在中出现多次 collection

    var listCleaned = myList.Where(x => myList.Where(ele => ele.WHEN.Date == x.WHEN.Date).Count > 1).ToList();