两个linq查询之间有什么区别

时间:2016-01-28 20:15:50

标签: c# linq lambda

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

这比使用的更好吗?

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));

1 个答案:

答案 0 :(得分:2)

第一个是查询表达式,第二个是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();