2009-07-06 77 views
1

看来有两种方法构建查询 - 或者使用查询表达式:你如何建立你的LINQ查询?

IEnumerable<Customer> result = 
         from customer in customers 
         where customer.FirstName == "Donna" 
         select customer; 

或使用扩展方法:

IEnumerable<Customer> result = 
      customers.Where(customer => customer.FirstName == "Donna"); 

你使用哪种?为什么?您认为哪种方式在长期内更受欢迎?

+0

重复的http://stackoverflow.com/questions/630045/linq-dot-notation-vs-query-expression和http://stackoverflow.com/questions/1054965/when-to-use-lambda-expressions -in-lin-clause-in-linq和其他可能的。 – 2009-07-06 04:02:49

回答

1

在表达式语法中只有有限数量的操作可用,例如,Take()或First()仅在使用扩展方法时可用。

我个人更喜欢表达式,如果所有必需的操作都可用,如果不是,那么我回退到扩展方法,因为我发现它们比lambda更容易阅读。

看看这个答案,

Linq Extension methods vs Linq syntax

1

我使用的方法语法(几乎)完全是因为查询语法有更多的限制。出于可维护性原因,我发现最好立即使用方法语法,而不是稍后转换它,或者使用两种语法的组合。

开始时读起来可能有点难,但是一旦你习惯了,它就很自然。

0

我只使用方法语法。这是因为我发现它的写速度要快很多,而且我写了大量的linq。我也喜欢它,因为它更简洁。如果在一个团队中工作,那么最好就哪一个是首选的风格达成共识,因为混合这两种风格是难以理解的。

Microsoft建议查询语法。 “一般来说,我们推荐查询语法,因为它通常更简单,更易读”。 http://msdn.microsoft.com/en-us/library/bb397947.aspx

0

这取决于你和你的团队发现更多的可读性,我会根据具体情况选择它。有些查询在语法形式上可以更好地阅读,并且还有一些以方法形式更好地阅读。当然,还有一个宽泛的中间地带,你不能说这种或那种方式,或者有些人喜欢这种方式和其他方式。

请记住,您可以将两种形式混合在一起,使其更具可读性。

我没有理由怀疑任何一种形式在将来都会消失。