C# 列表<;A>;包含列表<;B>;包含列表<;C>;

C# 列表<;A>;包含列表<;B>;包含列表<;C>;,c#,.net,linq,linq-to-objects,C#,.net,Linq,Linq To Objects,我有一个类似下面的结构 class A { string title; List<B> bItem; } class B { int price; List<C> cItem; } class C { int quantity; } A类 { 字符串标题; 列出bItem; } B类 { 国际价格; 列出城市; } C类 {

我有一个类似下面的结构

class A    
{    
    string title;    
    List<B> bItem;    
}

class B    
{    
    int price;    
    List<C> cItem;    
}

class C    
{    
    int quantity;    
}
A类
{    
字符串标题;
列出bItem;
}
B类
{    
国际价格;
列出城市;
}
C类
{    
整数;
}
列表
包含约200000个“A”实例

现在,对象“A”包含一个“B”列表,对象“B”包含一个“C”列表;我还有多个
列表的实例。现在我想在一个列表中找到所有的“A”都有这样的“B”,所有的“B”都有这样的“C”,其中包含
数量>500

我面临的问题是为LINQ指定目标

如果我使用
listA[0].listB[6].listC
,那么它将我的搜索限制为只搜索提到的目标,但我想搜索整个对象“listA”


谢谢你的回复。由于我使用的是分层对象,因此无法通过指定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”来限制我的搜索容器

我想在我的整个对象中搜索数量的所有实例

如果使用LINQ数据集,那么我们在一个表中有完整的“C”对象,因此我们可以查询所有C.quantity,而不管它们的父对象是什么。如何在LINQ中实现与对象的相似性

谢谢,

穆罕默德

IEnumerable list=新列表(…);//假设
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 a500=来自列表中的 从a.bItem中的b开始 从c到b.cItem 其中c.数量>500 选择一个;
IEnumerable list=新列表(…);//假设
var a500=来自列表中的
从a.bItem中的b开始
从c到b.cItem
其中c.数量>500
选择一个;

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

var query = listA.Where(a => a.bItem
                              .All(b => b.cItem.All(c => c.quantity > 500)));

换句话说,对于每个
A
检查所有B是否符合(B中的所有C的数量都大于500)。

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

var query = listA.Where(a => a.bItem
                              .All(b => b.cItem.All(c => c.quantity > 500)));
换句话说,对于每个
A
检查所有B是否符合(B中的所有C的数量都大于500)。

我认为这就是您想要的:

 var result = aCol.where(a => a.bItem.Any(b => b.cItem.Any(c => c.quantity > 500)));
我想这就是你想要的:

 var result = aCol.where(a => a.bItem.Any(b => b.cItem.Any(c => c.quantity > 500)));

即使我已经尽我所能编辑了你的问题,它仍然非常不清楚。请阅读并编辑问题以进一步澄清。您是否需要这样的
A
,其中至少包含1个
B
,其中至少包含1个
C
,数量>500?即使我尽我所能编辑了您的问题,仍然非常不清楚。请阅读并编辑问题以进一步澄清。您是否需要这样的
A
,其中至少包含1个
B
,其中至少包含1个
C
,数量>500?这将返回一个A,其中任何B和任何C的数量都大于500。虽然问题的答案还不清楚,但按照我理解问题的方式,我们只想知道所有的Bs都有Cs,而Cs的数量都超过500。(此查询还将多次返回相同的
A
引用,每个C孙子一个引用。)这不会给出多个A吗?@Magnus:会的,不是吗?我怀疑。@Jon:同意,但我把这个问题理解为“至少包含一个”,就像Magnus的回答一样。@abatishchev我的意思是,同一个AThat的倍数将返回一个A,其中任何B和任何C的数量都大于500。虽然问题的答案还不清楚,但按照我理解问题的方式,我们只想知道所有的Bs都有Cs,而Cs的数量都超过500。(此查询还将多次返回相同的
A
引用,每个C孙子一个引用。)这不会给出多个A吗?@Magnus:会的,不是吗?我怀疑。@Jon:同意,但我读到的问题是“至少包含一个”,就像Magnus的答案一样。@abatishchev我的意思是A:D打这个作为答案的倍数:D:D打这个作为答案:D