我有一个实体说类型A,属性类型列表为B.类型B也有一个类型为List of C的属性。
我想在A的对象上应用过滤器,以便在List of C中只有C对象,其Selected属性为True。
这可以这样做:
A objA = A.ListB.ForEach(b => {b.ListC.RemoveAll(c => c.Selected == false);});
但我不必删除所有那些具有Selected = false的C对象。我只想过滤它们。
有什么想法吗?
更多解释:有一个类型为A的对象,其中包含B属性列表。在A的B列表的每个B对象中,存在C属性列表。 C对象具有Selected属性。现在,我需要的是 - 一个带有List of B的A的对象,其中B的C列表中的每一个只有那些具有Selected = true的C对象。 理想的输出是类型A.列表B不应仅被过滤列表C需要被过滤。
答案 0 :(得分:2)
这个怎么样:
A.ListB.Where( b => b.ListC.Exists( c => c.Selected ) )
这是你想要的吗?
答案 1 :(得分:1)
如果需要包含所有选定C对象的列表,可以执行以下操作:
List<C> selectedC = A.ListB.SelectMany( b => b.ListC.Where( c => c.Selected)).ToList();
答案 2 :(得分:0)
var qry = from b in A.ListB
select new {B=b,ListC=b.ListC.Where(x => x.Selected).ToList()};
请注意,这只是一个匿名元组;我们无法显示代码来重建A
/ B
等,而无需更多关于代码结构,有什么道具等信息等等。