LINQ学习笔记:解释查询(Interpreted Queries)
解释查询(Interpreted Queries) LINQ提供了2个平行架构:针对本地对象集合的查询(local query), 以及针对远程数据源的查询(interpreted query). 目前我们它讨论的架构都是关于本地查询的, 主要是操作那些实现了IEnumerable<>的对象集合.而Interpreted query则是用于操作那些实现了IQueryable<>的序列, Queryable类中的查询操作符会通过执行运行时被解析的表达式树得到最终结果. (Enumerable类中的查询操作符实际上也可以和IQueryable<>序列一起工作, 但问题是结果集只能在客户机本地运行才能得到 — 也这是为什么要在Queryable类中提供另外一套查询操作符的原因.) 当前的.NET Framework提供了两个IQueryable的具体实现: 1. LINQ to SQL 2. LINQ to Entities 另外, 扩展方法AsQueryable可以针对任何可枚举的集合生成一个IQueryable的包装. 假定我们将使用以下的SQL脚本创建一个简单的customer表并且插入一些名称: 1: create table Customer
2: (
3: ID int not null primary key, 4: Name varchar(30)
5: )
6: insert Customer values (1, ''James'') 7: insert Customer values (2, ''Daniel'') 8: insert Customer values (3, ''Carder'') 9: insert Customer values (4, ''Amy'') 10: insert Customer values (5, ''Joe'') 这个表被创建以后, 我们可以编写在C#代码中编写一个Interpreted的LINQ查询用于查找那些名称中包含a字符的记录, 代码如下: 1: using System; 2: using System.Linq; 3: using System.Data.Linq; 4: using System.Data.Linq.Mapping; 5:
6: [Table] public class Customer 7: {
8: [Column(IsPrimaryKey=true)] public int ID; 9: [Column] public string Name; 10: }
11:
12: class Test 13: {
14: static void Main( ) 15: {
16: var dataContext = new DataContext ("cx string... "); 17: Table<Customer> customers = dataContext.GetTable <Customer>( );
18:
19: IQueryable<string> query = from c in customers 20: where c.Name.Contains ("a") 21: orderby c.Name.Length
22: select c.Name.ToUpper( );
23:
24: foreach (string name in query) 25: Console.WriteLine (name);
26: }
27: }
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |