使用linq

时间:2017-06-29 16:43:33

标签: c#

我有嵌套列表项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));

此代码有效!但是有什么办法可以通过||运算符在一行中实现相同的效果吗?

1 个答案:

答案 0 :(得分:6)

您无法在一行中实现此目标,因为您对RemoveAll的两次调用都在两个单独的集合上运行。您可以将两个lambdas组合成一个,如下所示:

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

注意:还有其他方法。例如,您可以在TransactionHistoryDetails上引入一种方法来消毒"消毒"两个列表,基本上隐藏了两条RemoveAll线。