我必须拉扯其ID在列表中的所有客户
我有一个CustomerID的列表
列出custidlist =新列表{1,2,3 .... etc。}();
我必须写一个linq查询来获取id在上面列表中的所有客户
custidlist
var customers = db.Customers.Where(c => custidlist。包含(c.customerid));
使用包含在性能问题上效果不佳。
我们可以像这样使用比较操作员
var customers = db.Customers.Where(c => custidlist。比较(c.customerid));的 ????
I Heard Compare最适合效果
答案 0 :(得分:1)
由于这是Linq to SQL / Entities,因此您的Linq Contains
查询将被转换为大致类似的SQL语句:
select * from Customers where customerId in (1,2,3)
不仅你的其他建议不受支持,而且你也不能比这种SQL性能做得更好。
答案 1 :(得分:0)
当您在Linq中编写一个包含查询的SQL时,它将被解雇为SQL中的查询,并且在数据库上运行查询应该是最快的..
但有一点需要注意的是,在查询中要记住可能对我认为在sql server中大约2000+以上的实体数量有限制,以及解决这个问题的方法是批处理查询。