我有以下形式的LINQ实体查询:不支持嵌套查询。 Operation1 =“UnionAll”操作2 =“MultiStreamNest”
var x = from a in SomeData
where ... some conditions ...
select new MyType
{
Property = a.Property,
ChildCollection = from b in a.Children
select new MyChildType
{
SomeProperty = b.Property,
AnotherProperty = b.AnotherProperty
}
};
var y = from a in SomeData
where ... some other conditions ...
select new MyType
{
Property = a.Property,
ChildCollection = from b in a.Children
select new MyChildType
{
SomeProperty = b.Property,
AnotherProperty = b.AnotherProperty
}
};
var results = x.Concat(y);
(这是一个简化的例子 - 的“其中”和“选择”子句是更复杂。比这里显示我使用单独的查询语句创建一个组合一个太复杂,有太多的条件语句,并采取一个时代编译)
编译罚款,但所不同的执行失败:
"The nested query is not supported. Operation1='UnionAll' Operation2='MultiStreamNest'
请注意,我试图投影到嵌套的类型结构。如果我在Concat()之前的x和y上调用.ToList(),那么它工作正常。还有一点,我的一个属性是一个枚举,但我使用整数包装属性来分配它。
有没有一种方法可以做我想做的事情,而无需将所有数据存入内存?或者它是导致失败的枚举?
感谢,
牛逼
刚刚尝试过其中的第二个,看起来和第一个完全一样,即没有按照我的希望工作(请参阅我对@ Arion的帖子的评论。 – 2012-04-13 09:59:50
...现在已被删除。不管怎样,不介意使用Union作为结果集应该是不同的,但我会得到异常“The Distinct'操作不能应用于指定参数的集合ResultType”,我相信这是因为Distinct无法处理嵌套 – 2012-04-13 10:12:12
如果为空?它的行为如何? – innovia 2012-04-13 12:32:15