List< A>包含List< B>包含List< C>
本文关键字:List 包含 | 更新日期: 2023-09-27 18:13:07
我有一个类似于下面的结构。
class A
{
string title;
List<B> bItem;
}
class B
{
int price;
List<C> cItem;
}
class C
{
int quantity;
}
List<A>
包含约200,000个"A"实例;
现在对象"A"包含一个"B"的列表,对象"B"包含一个"C"的列表;我也有很多List<A>
的例子。现在我想在一个包含这样的"B"的列表中找到所有的"A",以及所有包含这样的"C"的"B"包含quantity > 500
;
我面临的问题是为LINQ指定目标。
如果我使用listA[0].listB[6].listC
,那么它将我的搜索限制为仅提到的目标,但我想搜索整个对象"listA"。
谢谢你的回复。因为我使用分层对象,所以我不能通过指定a.b eem或c.b equality直接访问数据。所以要接近c.质量,我必须做list [index]. list [index]. list [index].quantity。据我所知,我不能直接指定a. list或c.quantity或a.bItem。
在LINQ查询中,我们提供了一个目标体或数据的基本容器来查询,并通过给出目标为"list [index]. blist [index]. clist [index]. list [index]。"数量"限制了我的搜索容器
我要搜索整个list对象中quantity的所有实例。
如果使用LINQ到数据集,那么我们在一个表中有完整的"C"对象,所以我们可以查询所有的C .quantity,而不管它们的父类是什么。如何在LINQ中做类似的object.
谢谢你,穆罕默德
如前所述,你的问题不清楚,但它是可能你正在寻找:
var query = listA.Where(a => a.bItem
.All(b => b.cItem.All(c => c.quantity > 500)));
换句话说,对于每个A
检查所有B符合(B中所有c的数量大于500)。
IEnumerable<A> list = new List<A>(...); // assuming
var a500 = from a in list
from b in a.bItem
from c in b.cItem
where c.quantity > 500
select a;
我认为这就是你想要的:
var result = aCol.where(a => a.bItem.Any(b => b.cItem.Any(c => c.quantity > 500)));