似乎有两种方法可以构建查询 - 使用查询表达式:
IEnumerable<Customer> result =
from customer in customers
where customer.FirstName == "Donna"
select customer;
或使用扩展方法:
IEnumerable<Customer> result =
customers.Where(customer => customer.FirstName == "Donna");
你使用哪种?为什么?从长远来看,您认为哪种更受欢迎?
答案 0 :(得分:1)
表达式语法中只有有限数量的操作可用,例如,Take()或First()仅可使用扩展方法。
如果没有所有必需的操作,我个人更喜欢表达式,如果没有,那么我会回到扩展方法,因为我觉得它们比lambdas更容易阅读。
看看这个答案,
答案 1 :(得分:1)
我只使用方法语法(几乎),因为查询语法有更多限制。出于可维护性的原因,我发现最好立即使用方法语法,而不是稍后转换它,或者使用两种语法的混合。
一开始阅读起来可能有点困难,但是一旦你习惯它,它就会很自然。
答案 2 :(得分:0)
我只使用方法语法。这是因为我觉得写起来要快得多,而且我写了很多linq。我也喜欢它,因为它更简洁。如果在团队中工作,可能最好就哪种风格达成共识,因为混合这两种风格很难理解。
Microsoft建议使用查询语法。 “一般来说,我们建议使用查询语法,因为它通常更简单,更易读”。 http://msdn.microsoft.com/en-us/library/bb397947.aspx
答案 3 :(得分:0)
这取决于您和您的团队发现哪些更具可读性,我会根据具体情况选择此项。有些查询在语法形式上读得更好,并且有一些查询在方法形式上读得更好。当然,有一个广阔的中间地带,你不能说这种方式或另一种方式,或者有些人喜欢这种方式和其他方式。
请记住,您可以将两种形式混合在一起,使其更具可读性。
我认为没有理由怀疑将来任何一种形式都会消失。