我的结构类似于以下。
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”,所有“B”都有这样的“C”,其中包含quantity > 500
;
我面临的问题是为LINQ指定目标。
如果我使用listA[0].listB[6].listC
,那么它将我的搜索限制为仅提到的目标,但我想搜索整个对象“listA”。
Thanx回复。因为我正在使用分层对象,所以我不能通过指定a.bitem或c.quality直接访问数据。所以为了接近c.quality,我必须做一个aList [index] .bList [index] .cList [index] .quantity。根据我的知识,我不能直接指定a.bList或c.quantity或a.bItem。
在LINQ查询中,我们提供了一个目标体或基本容器数据来查询,并将目标作为“aList [index] .bList [index] .cList [index] .quantity”限制我的搜索容器。
我想在整个aList对象中搜索所有数量实例。
如果使用LINQ to DataSet,那么我们在一个表中有完整的“C”对象,因此我们可以查询所有c.quantity而不管它们的父级。如何在LINQ中对similer进行反对。
谢谢,
穆罕默德
答案 0 :(得分:4)
如上所述,您的问题尚不清楚,但您正在寻找可能:
var query = listA.Where(a => a.bItem
.All(b => b.cItem.All(c => c.quantity > 500)));
换句话说,对于每个A
检查,所有B符合(B中的所有C都具有大于500的数量)。
答案 1 :(得分:1)
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;
答案 2 :(得分:1)
我认为这就是你想要的:
var result = aCol.where(a => a.bItem.Any(b => b.cItem.Any(c => c.quantity > 500)));