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

问题描述:

我有嵌套列表项目ParticipantsDetails & AssigneeDetails内部父列表TransactionHistoryDetails使用linq从多个嵌套列表中删除项目

两个嵌套列表包含Name财产,我想删除包含Name作为null

代码项目:

此代码的工作!但是有什么办法可以通过使用||运算符来实现同一行?

+0

难道你不喜欢()=> {** code **}方法吗?这样你就可以用同样的方法做所有的事情,但括号内的两行代码体 –

+2

为什么你只需要一行?你可能会得到一条更复杂的线路,这会让另一个开发人员很难理解它在做什么。如果它提高可读性,可以更详细一些。 –

+1

我在该代码中看不到LINQ。 –

您无法在单行中实现此目的,因为您的两个RemoveAll调用在两个单独的集合上操作。您可以在两个lambda表达式组合成一个单一的一个,比如这个:

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

注:有其他办法了这一点。例如,您可以在TransactionHistoryDetails上引入一种方法来“清理”两个列表,实质上隐藏两条不可见的线。