Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带IEnumerable的LINQ选择_Linq_Entity Framework - Fatal编程技术网

带IEnumerable的LINQ选择

带IEnumerable的LINQ选择,linq,entity-framework,Linq,Entity Framework,我用的是EF4 我有一个IEnumerable,其中每个项目(属于Type01)都有一个IEnumerable 这可以解释: Type01 objType01 = ...; IEnumerable<Type02> en = objType01.allObjType02; 选择返回必须是: myItem01a myItem01a myItem01b myItem01b myItem01b 我知道如何使用老式的SQL(JOIN子句)来实现这一点。但我对LINQ表达式还相当陌生。 怎么

我用的是EF4

我有一个
IEnumerable
,其中每个项目(属于
Type01
)都有一个
IEnumerable

这可以解释:

Type01 objType01 = ...;
IEnumerable<Type02> en = objType01.allObjType02;
选择返回必须是:

myItem01a
myItem01a
myItem01b
myItem01b
myItem01b
我知道如何使用老式的SQL(JOIN子句)来实现这一点。但我对LINQ表达式还相当陌生。
怎么做呢?

作弊。使用
SelectMany
(或s中的等效倍数
)迭代所有
Type02
s,但每次只生成一个
Type01

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

现在,
repeatedType01s
是一个具有所需基数的
IEnumerable

为什么要这样?当我将IEnumerables作为数据源传递时,FastReport.net遇到了一些问题。FastReport在尝试读取“复杂”结构(如带子对象)时失败。它工作的唯一方式(对我来说)是使用一个“简单”的结构,就像它是一个DB表一样。My
t01.allObjType02
给了我一个对象引用,而不是设置为对象的实例。错误。发生这种情况的原因是
allObjType02
Null
,但当一个make a“normal”LINQ选择并使用foreach进行迭代时,我的
allObjType02
属性有一个值。错误在哪里?我用的是EF4。谢谢,我想我知道发生了什么。有时我的
t01.allObjType02
null
。它正在破坏我的密码。当此属性为空时,是否有办法“显示”该项?这就像SQL语句的左连接,我想我通过将第二个
from
放在我这里的where子句之后来修复它。谢谢
var repeatedType01s = 
    from t01 in enumerableOfType01s
    from t02 in t01.allObjType02
    select t01;