如何使用 linq 删除所有符合条件的列表行?
How to RemoveAll list rows matching a condition using linq?
我正在尝试删除 List<T>
中匹配 where 条件的所有记录。我在 linq 中找到的是 RemoveAll()
方法,但它似乎只能通过删除匹配条件的属性而不是列表中的 complete row
来工作。
所以我尝试将 remove all as suggested here 与导致 "argument null exception".
的 Where 子句结合使用
问题:
如何使用 linq RemoveAll 列出与条件匹配的行?
//Sort the list by the UpdatedTime time descending
//Remove all records in list that are older than today's date and status equal to BB. Then order the remaining records desc.
var cuttOff = DateTime.UtcNow.AddDays(-10);
List<Escalation> escHistorySorted = escHistory.RemoveAll.Where(x => x.UpdatedTime <= cuttOff && x.status == "BB").OrderByDescending(d => d.UpdatedTime).ToList();
看来您一次尝试做的事情太多了。
先删除记录(将谓词从 where
子句直接移到 RemoveAll
内),然后对它们进行排序。
var cuttOff = DateTime.UtcNow.AddDays(-10);
escHistory.RemoveAll(x => x.UpdatedTime <= cuttOff && x.status == "BB");
List<Escalation> escHistorySorted = escHistory.OrderByDescending(d => d.UpdatedTime).ToList();
RemoveAll
的return值是一个整数,表示删除的记录数,所以不能简单地对调用该方法的结果进行排序。
我正在尝试删除 List<T>
中匹配 where 条件的所有记录。我在 linq 中找到的是 RemoveAll()
方法,但它似乎只能通过删除匹配条件的属性而不是列表中的 complete row
来工作。
所以我尝试将 remove all as suggested here 与导致 "argument null exception".
问题:
如何使用 linq RemoveAll 列出与条件匹配的行?
//Sort the list by the UpdatedTime time descending
//Remove all records in list that are older than today's date and status equal to BB. Then order the remaining records desc.
var cuttOff = DateTime.UtcNow.AddDays(-10);
List<Escalation> escHistorySorted = escHistory.RemoveAll.Where(x => x.UpdatedTime <= cuttOff && x.status == "BB").OrderByDescending(d => d.UpdatedTime).ToList();
看来您一次尝试做的事情太多了。
先删除记录(将谓词从 where
子句直接移到 RemoveAll
内),然后对它们进行排序。
var cuttOff = DateTime.UtcNow.AddDays(-10);
escHistory.RemoveAll(x => x.UpdatedTime <= cuttOff && x.status == "BB");
List<Escalation> escHistorySorted = escHistory.OrderByDescending(d => d.UpdatedTime).ToList();
RemoveAll
的return值是一个整数,表示删除的记录数,所以不能简单地对调用该方法的结果进行排序。