我有以下形式的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