1

似乎有两种方法可以构建查询——或者使用查询表达式:

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

或使用扩展方法:

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

你使用哪个,为什么?从长远来看,您认为哪个会更受欢迎?

4

4 回答 4

1

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

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

看看这个答案,

Linq 扩展方法与 Linq 语法

于 2009-07-06T04:03:43.117 回答
1

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

一开始可能有点难读,但是一旦你习惯了它,它就会很自然地工作。

于 2009-07-06T05:04:25.243 回答
0

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

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

于 2009-07-06T05:11:15.057 回答
0

这取决于您和您的团队认为哪个更具可读性,我会根据具体情况选择它。有一些查询以语法形式读起来更好,有些查询以方法形式读得更好。当然,有一个广泛的中间立场,你不能说一种或另一种方式,或者有些人更喜欢这种方式,而另一些人则喜欢那种方式。

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

我认为没有理由怀疑未来任何一种形式都会消失。

于 2009-07-06T05:25:57.307 回答