Basic Query Operations(第二章 基本的查询操作)

本章介绍linq查询的基本操作和典型的各种操作方法。更多的方法还有参考

LINQ Query Expressions (C# Programming Guide)

Standard Query Operators Overview

一:Generating(产生还是开始?)

在linq查询中第一步要指出要被查询的数据源,因为在c#中一个变量在使用前必须先被声明。这就是为什么from从句在最前面。

IEnumerable<Customer> customerQuery =
    from cust in customers
    //...
from从句被成为发生器(generator),对数据源不需要显示声明。

 二:joining(链接)

在linq中join从用来和对象集合一起使用不仅是数据表。在linq中不得不经常使用join就像你做数据库操作时候的外键联系一样。

三:Filtering(过滤,筛选)

在通常的查询操作都使用bool类型的表达来得到正确和或需要的数据。linq中通过where来完成

IEnumerable<Customer> queryLondonCustomers =
    from cust in customers
    where cust.City == "London"
四:Ordering(排序)

通过orderby可以很方便的返回经过排序的数据。例如下面。其中name是字符串类型

IEnumerable<Customer> queryLondonCustomers = 
    from cust in customers
    where cust.City == "London"
    orderby cust.Name ascending
    …
五:Grouping
通过Group从句可以根据你指定的关键字来对你的结果分组。比如你的顾客要根据城市来分组,可以使用cust.City关键字
IEnumerable<IGrouping<string, Customer>> queryCustomersByCity = 
    from cust in customers
    group cust by cust.City;

    foreach(IGrouping<string, Customer> group in custQuery)
    {
        Console.WriteLine(group.Key);
        foreach(Customer customer in group)
        {
            Console.WriteLine("    {0}", customer.Name);
        }
    }
六:select
select就是返回结果
select obj
也可以在select后面进行各种运算。比如
IEnumerable<String> queryNamesInLondon = 
    from cust in customers
    where cust.City == "London"
    orderby cust.Name ascending
    select cust.Name;
custom是个大的表对象。如果只返回custom的名称列的话就是一个IEnumerable<String>
更复杂一点的
struct NamePhone
{
    Public string Name;
    Public string Phone;
}
IEnumerable<NamePhone> queryLondonNamesPhones = 
    from cust in customers
    where cust.City == "London"
    orderby cust.Name ascending
    select new NamePhone {Name = cust.Name, Phone = cust.Phone};

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

原文地址:https://www.cnblogs.com/zjypp/p/2319482.html