當一個創建LINQ查詢爲:替代爲凡LINQ語句生成ID。在(X,Y,Z)
var ids = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var q = from r in context.Table
where ids.Contains(r.Id)
select r;
與EF使用時,它產生的T-SQL類似於
SELECT ... FROM Table
WHERE Id IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
一般來說,這是我所期望的,儘管它似乎搞亂了「查詢計劃編制」,因爲每個查詢都是不同的,因此需要在執行之前進行編譯。
由於EF否則在使用變量非常好((@p_ LINQ _)來避免這種情況,它不(默認)爲這些類型的查詢做到這一點。
是它在所有可能的爲了避免這種
表值參數映入腦海,但目前還不支持
BTW:?在現實生活中的查詢是一個複雜得多,並在IDS的項目數列表是很多,但仍然需要過濾掉數據,我們不想過濾'客戶端'