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.

谢谢你,穆罕默德

List< A>包含List< B>包含List< C>

如前所述,你的问题不清楚,但它是可能你正在寻找:

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)));
相关文章: