Linq to sql Linq2sql优化左联接以获取仅存在于1个容器中的项
我想从一个容器中获取另一个容器中不存在的项目。一个容器是IEnumerable,另一个是DB中的实体。比如说Linq to sql Linq2sql优化左联接以获取仅存在于1个容器中的项,linq-to-sql,performance,left-join,Linq To Sql,Performance,Left Join,我想从一个容器中获取另一个容器中不存在的项目。一个容器是IEnumerable,另一个是DB中的实体。比如说 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
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);
}
改进了底层查询,并在(…)中添加了WHERE[id]
,这似乎是一种更好的方法
我有两个问题:
中可以有多少个参数是有限制的。如果我超出了限制(这不太可能发生,但最好做好准备),我当前的查询是否有效
var filtered_ids = ids.Except(from u in ctx.Users
where ids.Contains(u.id)
select u.id);