我在父列表ParticipantsDetails中嵌套了列表项AssigneeDetailsTransactionHistoryDetails

嵌套列表都包含Name属性,我想删除包含Name作为null的项目

码:

transactionHistory.TransactionHistoryDetails.ForEach(u => u.ParticipantsDetails.RemoveAll(a => a.Name == null));

transactionHistory.TransactionHistoryDetails.ForEach(u => u.AssigneeDetails.RemoveAll(a => a.Name == null));


此代码有效!但是,有什么方法可以通过使用||运算符在同一行中实现相同的目的?

最佳答案

您不能单行实现此目的,因为您对RemoveAll的两次调用在两个单独的集合上进行。您可以将两个lambda合并为一个,如下所示:

transactionHistory.TransactionHistoryDetails.ForEach(u => {
    u.ParticipantsDetails.RemoveAll(a => a.Name == null);
    u.AssigneeDetails.RemoveAll(a => a.Name == null);
});


注意:对此有替代方法。例如,您可以在TransactionHistoryDetails上引入一种方法来“清理”两个列表,从本质上隐藏两条RemoveAll行。

关于c# - 使用linq从多个嵌套列表中删除项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44830799/

10-09 00:40