快速业务通道

LINQ学习笔记:过滤Filtering

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-13

过滤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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号