【已更新最新开发文章,点击查看详细】

本篇介绍 LINQ 查询表达式和一些在查询中执行的典型操作。

获取数据源
LINQ 查询中,先使用 from 子句引入数据源 (customers) 和范围变量 (cust) 。
// 从 IEnumerable<Customer> 中查询所有的客户信息
var queryAllCustomers = from cust in customers
                        select cust;

let 子句。

对于非泛型数据源(例如 ArrayList),必须显式键入范围变量。 有关详细信息,请参阅如何:使用 LINQ 查询 ArrayList (C#) 和 from 子句。

筛选
在下列示例中,仅返回地址位于“London”的 customers
var queryLondonCustomers = from cust in customers
                           where cust.City == "London"
                           select cust;

例如,若要仅返回来自“London”的客户 AND 该客户名称为“Devon”,可编写以下代码:

where cust.City=="London" && cust.Name == "Devon"

要返回来自 London 或 Paris 的客户,可编写以下代码:

where cust.City == "London" || cust.City == "Paris"
中间件排序
由于 Name是字符串,默认比较器将按字母顺序从 A 到 Z 进行排序。
var queryLondonCustomers3 = 
    from cust in customers
    where cust.City == "London"
    orderby cust.Name ascending
    select cust;

orderby 子句。

分组
在这种情况下,cust.City是键。
  // queryCustomersByCity 是 IEnumerable<IGrouping<string, Customer>> 类型
  var queryCustomersByCity =
      from cust in customers
      group cust by cust.City;

  // customerGroup 是 IGrouping<string, Customer> 类型
  foreach (var customerGroup in queryCustomersByCity)
  {
      Console.WriteLine(customerGroup.Key);
      foreach (Customer customer in customerGroup)
      {
          Console.WriteLine("    {0}", customer.Name);
      }
  }

列表中的每个元素都是具有 Key成员的对象,列表中的元素根据该键被分组。 

外层循环循环访问每个组,内层循环循环访问每个组的成员。

下列查询仅返回包含两个以上客户的组:

// custQuery 是 IEnumerable<IGrouping<string, Customer>> 类型
var custQuery =
    from cust in customers
    group cust by cust.City into custGroup
    where custGroup.Count() > 2
    orderby custGroup.Key
    select custGroup;

有关详细信息,请参阅 group 子句

联接
LINQ 中,join 子句始终作用于对象集合,而非直接作用于数据库表。
var innerJoinQuery =
    from cust in customers
    join dist in distributors on cust.City equals dist.City
    select new { CustomerName = cust.Name, DistributorName = dist.Name };

不必执行联接,只需使用点表示法访问订单:

from order in Customer.Orders...

有关详细信息,请参阅 join 子句

选择(投影)
select 子句进行数据转换。
 
 
【已更新最新开发文章,点击查看详细】

相关文章:

  • 2021-05-27
  • 2022-01-08
  • 2021-06-21
  • 2021-07-02
  • 2022-12-23
  • 2022-01-07
  • 2021-11-08
猜你喜欢
  • 2021-09-16
  • 2021-09-11
  • 2022-01-18
  • 2021-05-25
  • 2021-05-29
  • 2021-12-19
  • 2022-01-11
相关资源
相似解决方案