Linq查询而不是包含运营商的性能问题

时间:2011-08-16 21:27:56

标签: linq linq-to-sql

我必须拉扯其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最适合效果

2 个答案:

答案 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+以上的实体数量有限制,以及解决这个问题的方法是批处理查询。