2012-06-26 65 views
1

我有3类:分组查询的LINQ

Class 1: 
public IEnumerable<double> Values; 
public Class2 class2Instance; 

Class2: 
public string Name; 
public Class3 class3Instance; 

Class3: 
public long Id; 
public string Name; 

现在我已经得到了Class1一个巨大的集合,像一个IEnumerable<Class1>,和我有Class3标识。如何使用高效的LINQ查询来获取与Class2相关的所有Class1实例,该实例与Class1 ID匹配?

回答

4

那么,如果你已经得到了他们的顺序,你得去通过所有这些:

var matches = collection.Where(x => x.class2Instance.class3Instance.Id == id); 

如果你需要经常这样做,你可能想建立一个改为Dictionary<long, Class1>

(我假设未class2Instance也不class3Instance可以为空。如果他们可以,你需要使用如下代码Aducci的。)

+0

我想你可能需要用'class2Instance.class3Instance.id ' – Joe

+0

@JoeTuskan:Doh,固定感谢:) –

3
var query = from x in class1Enumerable 
      where x.class2Instance != null 
      where x.class2Instance.class3Instance != null 
      where x.class2Instance.class3Instance.id == yourId 
      select x;