有誰知道爲什麼這會導致計算器例外:在使用IQueryable的加入導致的StackOverflow異常
public IQueryable<Category> LoadCategories(bool onlyCatsWithProducts, ...)
{
var db = new DbDataContext();
var res = db.Categories.AsQueryable();
if (onlyCatsWithProducts)
res = from p in db.Products
from c in res
where p.CategoryID == c.ID
select c;
...
return res;
}
更新
改變了示例代碼來證明爲什麼我賦值給一個變量,然後稍後重新分配。基本上,這是因爲我正在編寫一個函數來從數據庫返回類別,並且我接受了幾個參數(例如onlyCatsWithProducts),其中每個參數只有在有值時纔對結果集進行過濾。請注意,這仍然不是我的實際代碼,因爲我的查詢更復雜,我只是想展示重現錯誤所需的最簡單的查詢。
這是實際的代碼嗎?如果是這樣,我猜猜有一個錯字...什麼是v? –
謝謝修復的錯字。我只是簡化了我的代碼,所以不是我的實際代碼。 – Michael
你不應該需要'.AsQueryable()'。您可能想要嘗試將輸出類型顯式設置爲底層接口,而不是使用'var'或'AsQueryable()'。我不確定這是否在這裏遞歸地分配表達式樹時解決了您的StackOverflow問題。 –