LINQ学习笔记:过滤Filtering
这里只过滤偶数位置的元素,LINQ to SQL不支持此种过滤. LINQ to SQL当中的Where 以下的方法会被转换为SQL当中的like操作符: Contains, StartsWith, EndsWith 例如, c.Name.Contains(“abc”)被翻译成customer.Name LIKE ‘%abc%’(如果要更加精确,可以使用参数化版本). 也可以使用SqlMethods.Like来执行更复杂的比较.你可以使用String上的CompareTo方法来执行字符顺序比较, 此方法映射到SQL的<和>操作符: 1: dataContext.Purchase.Where(p=>p.Description.CompareTo(“c”) < 0);
LINQ to SQL也允许你应用Contains操作符对本地集合进行过滤操作, 例如: 1: string[] chosenOnes = { “Tom”, “Jay” }; 2:
3: from c in dataContext.Customers 4:
5: where chosenOnes.Contains (c.Name)
其映射到SQL的in操作符: WHERE customer.Name IN (“Tom”, “Jay”) Take和Skip 参数列表: 源序列: IEnumerable 被take或者skip的元素数量: int Take使用前n个元素并丢弃剩余的元素, skip丢弃前n个元素并接受剩余的部分. 当你开发一个web页的时候这两个元素是很有用的, 它允许用户查看一个包含大量匹配数据的集合.例如, 假设用户使用短语”LINQ”查询一个图书数据库并且得到100个匹配记录, 下例返回了前20条: 1: IQueryable query = dataContext.Books
2:
3: .Where (b => b.Title.Contains (“LINQ”))
4:
5: .OrderBy (b => b.Title)
6:
7: .Take (20);
解析来的这个查询返回了第21到40条: 1: IQueryable query = dataContext.Books
2:
3: .Where (b => b.Title.Contains (“LINQ”))
4:
5: .OrderBy (b => b.Title)
6:
7: .Skip (20).Take (20);
在SQL SERVER 2005当中,LINQ to SQL将Take和Skip翻译成ROW_NUMBER函数, 而在SQL SERVER2000中则对应到top n子查询. TakeWhile和SkipWhile 参数列表: 源序列: IEnumberable 断言: TSource=>bool 或者(TSource, int) => bool TakeWhile枚举输入序列, emit每一个元素知道给定的断言等于true, 然后丢弃所有剩余的元素: 1: int[] numbers = { 3, 5, 2, 234, 4, 1 }; 2:
3: var takeWhileSmall = numbers.TakeWhile (n => n < 100);
4:
5: // RESULT: { 3, 5, 2 }
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |