【问题标题】:What is the difference between the two linq query [duplicate]两个linq查询有什么区别[重复]
【发布时间】:2016-05-06 09:35:34
【问题描述】:

那里的两段代码有什么区别?

这比使用的要好?

DataClassesDataContext db = new DataClassesDataContext();
var QSelect1 = from _ADS in db.tblADs
                where _ADS.fldAdsId == Convert.ToInt32(e.CommandArgument)
                select _ADS;
var QSelect2 = db.tblADs.Where(x => x.fldAdsId == Convert.ToInt32(e.CommandArgument));

【问题讨论】:

  • 第一个将在您编译代码时转换为第二个。所以答案是它们仅在语法和编译成本上有所不同。
  • ...对我来说,使用第二个 method chain 语法而不是以前的 query expression -horses 用于课程是一种偏好

标签: c# linq lambda


【解决方案1】:

第一个是查询表达式,第二个是 Lambda 表达式。它们是等价的。他们最终是一样的。

更多信息见Query Syntax and Method Syntax in LINQ (C#)

要记住的一点是,有许多运算符在查询语法中没有关键字,您应该使用流畅的语法。这意味着外部的任何操作员 以下内容:

Where, Select, SelectMany
OrderBy, ThenBy, OrderByDescending, ThenByDescending
GroupBy, Join, GroupJoin

您也可以使用它们的混合版本:

int matches = (from n in names where n.Contains ("a") select n).Count();

【讨论】:

  • 几乎 - 第二个是method chain - 它比前者更类似于 lambda,它看起来像 sql 的近亲
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多