LINQ学习笔记:过滤Filtering
过滤Filtering Where: 返回满足给定条件的子集,SQL对应语法也是Where Take: 返回前N条记录,丢弃剩余部分,SQL对应语法为Where ROW_NUMBER()或者TOP n子查询 Skip:跳过前N条记录, 返回剩余部分, SQL对应语法为Where ROW_NUMBER()或者NOT IN(Select Top N…) TakeWhile:返回输入序列中的所有元素直到断言等于true,无SQL对应语法 SkipWHile:跳过输入序列中的元素直到断言等于true, 返回剩下的所有元素, 无SQL对应语法 Distinct:返回无重复的集合元素,SQL对应语法为Select Distinct… 使用这些过滤方法, 你总是会得到与原始输入序列相等或者更少元素的输出序列,而不可能得到更多的元素.得到的这些元素与原先的元素是一致, 中间并没有做任何的转换. Where 参数列表: 源序列: IEnumerable 断言: TSource => bool or (TSource, int) => bool(LINQ to SQL不支持) 实例: 1: string[] names = { “James”,“Jack”,“Hendry”,“Mary”,“David” }; 2:
3: IEnumerable<string> query = 4:
5: names.Where (name => name.EndsWith (“y”));
6:
7:
8:
9: foreach(var s in query) 10:
11: Console.WriteLine(s);
12:
13: // Result: hendry, Mary
使用复合查询语法: 1: IEnumerable<string> query = from n in names 2:
3: where n.EndsWith (“y”) 4:
5: select n;
在一个查询中, Where可以出现多次, 使用let可以将他们分离开: 1: IEnumerable<string> query = from n in names 2:
3: where n.Length > 3 4:
5: let u = n.ToUpper( )
6:
7: where u.EndsWith (“Y”) 8:
9: select u; // Result: { “HENDRY”, “MARY” }
索引过滤 Where的另外一个断言一个int类型作为其第二个参数, 这个参数代表当前元素在输入序列中的索引位置, 断言可以使用这个信息来做过滤决定.例如: 1: IEnumerable<string> query = 2:
3: names.Where ((n, i) => i % 2 == 0);
4:
5: foreach(var s in query) 6:
7: Console.WriteLine(s);
8:
9: // Result: James, Hendry, David
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |