我有嵌套列表项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));
此代码有效!但是有什么办法可以通过||
运算符在一行中实现相同的效果吗?
答案 0 :(得分:6)
您无法在一行中实现此目标,因为您对RemoveAll
的两次调用都在两个单独的集合上运行。您可以将两个lambdas组合成一个,如下所示:
transactionHistory.TransactionHistoryDetails.ForEach(u => {
u.ParticipantsDetails.RemoveAll(a => a.Name == null);
u.AssigneeDetails.RemoveAll(a => a.Name == null);
});
注意:还有其他方法。例如,您可以在TransactionHistoryDetails
上引入一种方法来消毒"消毒"两个列表,基本上隐藏了两条RemoveAll
线。