简体   繁体   English

使用linq从多个嵌套列表中删除项目

[英]Remove items from multiple nested list using linq

I am having nested list items ParticipantsDetails & AssigneeDetails inside parent list TransactionHistoryDetails . 我在父列表TransactionHistoryDetails中嵌套了列表项ParticipantsDetailsAssigneeDetails

Both of nested list contains Name Property and I would like to remove items which contain Name as null 嵌套列表都包含Name属性,我想删除包含Namenull

Code: 码:

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

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

This code works! 此代码有效! But is there any way I can achieve the same in a single line by using || 但是有什么办法可以使用||在一行中实现相同的效果? operator? 运营商?

You cannot achieve this in a single line, because your two calls of RemoveAll operate on two separate collections. 您无法在一行中实现此目标,因为您对RemoveAll的两次调用在两个单独的集合上进行。 You can combine the two lambdas into a single one, like this: 您可以将两个lambda合并为一个,如下所示:

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

Note: There are alternative approaches to this. 注意:对此有替代方法。 For example, you can introduce a method on TransactionHistoryDetails to "sanitize" both lists, essentially hiding two RemoveAll lines from sight. 例如,您可以在TransactionHistoryDetails上引入一个方法来“清理”两个列表,实际上隐藏了两条RemoveAll行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM