編輯:試圖讓我的問題更清楚一點。如何在運行時動態組合一組LINQ查詢?
我試圖構建一個LINQ表達式,它是幾個LINQ語句的交集。現在,我可以手動將兩個語句交叉在一起,並得到期望的結果。
var results =
context.UserBooleanAttributes.Where(x => x.UserAttributeID == 1 && x.Value).Select(a => a.User)
.Intersect(
context.UserBooleanAttributes.Where(y => y.UserAttributeID == 2 && y.Value).Select(b => b.User)
);
Assert.Equal(100,results.Count());
我的目標是動態構建它,例如使用for-loop。由於我使用的是LINQ,我想推遲執行,直到我實際調用某些強制執行的結果。
用的AddRange的問題是,它似乎引起表達式被評估。我在OP中沒有提到的是,我將這與EntityFramework結合使用,並且在使用Intersect構建我的列表後,我希望能夠檢查list.ToString()以查看基礎SQL代碼。 – WhiskerBiscuit
@WhiskerBiscuit哦,好吧,這是有道理的,你想推遲執行。我最後的片段呢?您可以嘗試將查詢拉出,放入單獨的變量中,並在其上放置一個斷點。除非你真的只是想看看'Intersect'語句看起來像什麼...... –
更新了我的問題。 AddRange的問題在於,它也迫使立即執行該語句。 – WhiskerBiscuit