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注册。