开发者

Using multiple .Where() calls or && conditions for LinqToEntities queries

Are the following two queries equivalent? If they are 开发者_开发问答not equivalent, which performs better? Is there a way I can see the sql output of the queries?

var query1 = items.Where(i => i.Enabled == true).Where(i => i.Name == "Bob");

var query2 = items.Where(i => i.Enabled == true && i.Name == "Bob");


As Andrew says, the two options are equivalent. One practically useful difference is that you can easily generate conditions in the Where clause programmatically. For example if you wanted to exclude certain names:

var query = items;
for(string name in excluded) 
  query = query.Where(i => i.Name != excluded); 

This is something that cannot be done easily when writing query using && operator.


Both queries will translate to the same SQL - you can use a tool like LinqPad to verify this if you want (I just did). The LINQ provider that translate your expression trees into T-SQL is smart enough to understand that these queries are synonymous. Of course this means that both queries will perform equally as well.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜