我正在使用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表达式相当新。 怎么可能呢?
答案 0 :(得分:6)
作弊。使用SelectMany
(或等效的多个from
)来迭代所有Type02
,但每次只产生一个Type01
:
var repeatedType01s =
from t01 in enumerableOfType01s
from t02 in t01.allObjType02
select t01;
现在repeatedType01s
是IEnumerable<Type01>
,其中包含您想要的基数。