我在父列表ParticipantsDetails
中嵌套了列表项AssigneeDetails
和TransactionHistoryDetails
。
嵌套列表都包含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/