0
我想從一個不在另一個容器中的容器獲取項目。一個容器是IEnumerable,另一個容器是DB中的實體。例如Linq2sql優化左連接獲取僅存在於一個容器中的項目
IEnumberable<int> ids = new List<int>();
ids.Add(1);
ids.Add(2);
ids.Add(3);
using (MyObjectContext ctx = new MyObjectContext())
{
var filtered_ids = ids.Except(from u in ctx.Users select u.id);
}
這種方法的工作原理,但我意識到潛在的SQL是類似SELECT id FROM [Users]
。這不是我想要的。它更改爲
var filtered_ids = ids.Except(from u in ctx.Users
where ids.Contains(u.id)
select u.id);
改善基礎查詢,並增加了WHERE [id] IN (...)
這似乎是一個更好的方式。
我有2個問題:
是否有可能進一步提高性能,此查詢?
據我記得,在
IN
有多少參數可以限制。如果我超過限制(這不太可能發生,但最好是準備),我的當前查詢是否可以工作?
感謝您的回答 – a1ex07 2010-11-04 19:52:19