Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#Linq删除一项_C#_Linq - Fatal编程技术网

c#Linq删除一项

c#Linq删除一项,c#,linq,C#,Linq,我有一个包含对象的列表。对象的一个属性是from类型date,如果一个组只包含一个项目,我希望按日期分组并删除该项目 我的列表已按日期排序: 01.01.2018 01.01.2018 02.01.2018 <- this one should be removed 03.01.2018 03.01.2018 我的问题是,2018年1月2日之后的每一项都会被删除。使用while,而不是TakeWhile: var listCleaned = myList.GroupBy(x =>

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

我的列表已按日期排序:

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

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

使用
while
,而不是
TakeWhile

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

您可以尝试另一种方法:-

在这里,我添加了一个条件,即当
日期在
集合中多次出现时,仅选择那些
的对象

旁注:不需要
SelectMany
中的
ToList()
var listCleaned = myList.GroupBy(x => x.WHEN.Date)
                        .Where(y => y.Count() > 1)
                        .SelectMany(i => i.ToList())
                        .ToList();
var listCleaned = myList.Where(x => myList.Where(ele => ele.WHEN.Date == x.WHEN.Date).Count > 1).ToList();