LINQ基本查询操作2010-11-27 MSDN 下面各主题中提供了更详细的信息:获取数据源在 LINQ 查询中,第一 步是指定数据源。像在大多数中一样,在 C# 中,必须先声明变量,才 能使用它。在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 (customers) 和范围变量 (cust)。//queryAllCustomers is an IEnumerable<Customer>
var queryAllCustomers = from cust in customers
select cust;
范围 变量类似于 foreach 循环中的迭代变量,但在查询表达式中,实际上不发生迭 代。执行查询时,范围变量将用作对 customers 中的每个后续元素的引用。因 为编译器可以推断 cust 的类型,所以您不必显式指定此类型。其他范围变量可 由 let 子句引入筛选也许最常用的查询操作是应用布尔表达式形式 的筛选器。此筛选器使查询只返回那些表达式结果为 true 的元素。使用 where 子句生成结果。实际上,筛选器指定从源序列中排除哪些元素。在下面的示例中 ,只返回那些地址位于伦敦的 customers。var queryLondonCustomers = from cust in customers
where cust.City == "London"
select cust;
您可以使用熟悉的 C# 逻辑 AND 和 OR 运算符来根据需要在 where 子句中应用任意数量的筛选表达式。例如,若要只 返回位于“伦敦”AND 姓名为“Devon”的客户,您应编 写下面的代码:where cust.City=="London" && cust.Name == "Devon"
若要返回位于伦 敦或巴黎的客户,您应编写下面的代码:where cust.City == "London" || cust.City == "Paris"
排序通常可以很方便地将返回的数据进行排序。orderby 子句将使返回的序列中 的元素按照被排序的类型的默认比较器进行排序。例如,下面的查询可以扩展为 按 Name 属性对结果进行排序。因为 Name 是一个字符串,所以默认比较器执行 从 A 到 Z 的字母排序。var queryLondonCustomers3 =
from cust in customers
where cust.City == "London"
orderby cust.Name ascending
select cust;
若要按相反顺序(从 Z 到 A)对结果进行排序, 请使用 orderby…descending 子句。