分组查询Linq

时间:2012-06-26 16:54:38

标签: c# linq

我有3个班级:

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 ID。如何使用有效的LINQ查询来获取与Class1 ID相匹配的所有Class2个实例?

2 个答案:

答案 0 :(得分:4)

如果你得到了它们的序列,你必须经历所有这些:

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

如果您需要定期执行此操作,则可能需要构建Dictionary<long, Class1>

(我假设class2Instanceclass3Instance都不能为空。如果可以,你需要使用像Aducci这样的代码。)

答案 1 :(得分:3)

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