【问题标题】:How do you build your LINQ queries?您如何构建 LINQ 查询?
【发布时间】:2009-07-06 03:55:51
【问题描述】:

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

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

或使用扩展方法:

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

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

【问题讨论】:

标签: linq entity-framework linq-to-entities entity


【解决方案1】:

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

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

看看这个答案,

Linq Extension methods vs Linq syntax

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        我认为没有理由怀疑这两种形式将来都会消失。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多