看来有两种方法构建查询 - 或者使用查询表达式:

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

或使用扩展方法:

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

你使用,为什么哪?你认为哪将是长期的更受欢迎?

有帮助吗?

解决方案

是在表达式语法可用只有操作的有限数,例如,取()或优先(),使用扩展方法才可用。

我个人比较喜欢表达,如果所有必要的操作都可以,如果不是的话,我倒回扩展方法,因为我觉得他们更容易比lambda表达式阅读。

在此答案

看一看,

LINQ的扩展方法VS LINQ的语法

其他提示

我使用的方法的语法(几乎)排他地,因为查询的语法有更多的限制。为了可维护性原因,我发现优选的是使用该方法的语法向右走,而不是以后也许将其转换,或使用两种语法的混合。

这可能是一个有点难以在第一阅读,但一旦你习惯了它,它的工作原理相当自然的。

我只使用该方法的语法。这是因为我觉得快了很多写,我写一吨LINQ的。我也很喜欢它,因为它是更简洁。如果在一个团队中工作,所以最好来个concensus哪个是首选风格,混合两种风格是难以阅读。

Microsoft建议查询语法。 “一般来说,我们建议的查询语法,因为它通常是更简单,更具可读性”。 http://msdn.microsoft.com/en-us/library/bb397947。 ASPX

这要看您和您的团队找到更多的可读性,我会选择这种对个别情况。有一些疑问,在语法构成读好,有一些阅读方法的形式更好。当然,有一个广阔的中间地带,你不能说一种方式或其他,或者有些人更喜欢这种方式和其他的方式。

请记住,你可以两种形式混合在一起的地方可能会使其更易于阅读。

我认为没有理由怀疑任一种形式将在未来dissappear。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top