LINQ选择IEnumerable

时间:2012-06-25 14:51:58

标签: linq entity-framework

我正在使用EF 4。

我有一个IEnumerable<Type01>,其中每个项目(Type01)都有一个IEnumerable<Type02>

这可以解释:

Type01 objType01 = ...;
IEnumerable<Type02> en = objType01.allObjType02;

我需要(使用LINQ)选择一个IEnumerable<Type01>作为结果,但“记录计数”必须与所有Type02的“记录计数”之和相同项目

例如。对于此列表:

myItem01a
    myItem02a
    myItem02b
myItem01b
    myItem02c
    myItem02d
    myItem02e

选择返回必须是:

myItem01a
myItem01a
myItem01b
myItem01b
myItem01b

我知道如何使用旧学校SQL(JOIN子句)来做到这一点。但我对LINQ表达式相当新。 怎么可能呢?

1 个答案:

答案 0 :(得分:6)

作弊。使用SelectMany(或等效的多个from)来迭代所有Type02,但每次只产生一个Type01

var repeatedType01s = 
    from t01 in enumerableOfType01s
    from t02 in t01.allObjType02
    select t01;

现在repeatedType01sIEnumerable<Type01>,其中包含您想要的基数。