快速业务通道

ASP.NET通过WMI创建站点添加虚拟目录和主机头

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

分组Grouping

主要方法:

GroupBy: 将一个序列分组插入一个子序列, 对应SQL语法是GROUP BY

主要参数:

输入序列: IEnumerable

主键选择器: TSource => TKey

元素选择器(可选): TSource => TElement

比较器(可选):IEqualityComperar

返回类型是IEnumerable>

简要介绍

GroupBy将一个扁平的输入序列转换成一组序列, 例如,以下示例通过文件扩展名将c:\temp下面的文件分组:

   1: string[] files = Directory.GetFiles(“c:\\temp”);
   2:  
   3: IEnumerable<string,string>> query =
   4:  
   5: files.GroupBy(file => Path.GetExtension(file));

 

或者,你可以使用隐式类型减少代码输入:

   1: var query = files.GroupBy(file => Path.GetExtension(file));

 

枚举返回结果:

   1: foreach (IGrouping<string,string>grouping in query)
   2:  
   3: {
   4:  
   5: Console.WriteLine(“Extension: “ + grouping.Key);
   6:  
   7: foreach (string filename in grouping)
   8:  
   9: Console.WriteLine (” - “ + filename);
  10:  
  11: }

 

Enumerable.GroupBy将输入元素读入临时的目录字典,所有拥有相同key的元素都会被归入相同的二级目录. 默认情况下, 每一个grouping的元素都是未转换的输入元素, 除非你提供了一个elementSelector参数. 以下查询将每一个元素都转换为大写:

   1: files.GroupBy (file =>
   2:  
   3: ath.GetExtension (file), file => file.ToUpper());

 

elementSelector和keySelector是独立的,因此此查询将会得到与上面一样的分组结果.

另外,所有的子序列并不会根据字母排序,它只做分组, 而没有做任何排序相关的工作, 只是简单保存了原有序列排列的顺序. 如果你要排序, 必须要显式调用OrderBy操作符:

   1: string[] files = Directory.GetFiles(“c:\\temp”);
   2:  
   3: files.GroupBy (file => Path.GetExtension(file), file => file.ToUpper())
   4:  
   5: .OrderBy (grouping => grouping.Key);

 

如果使用复合查询语法:

   1: from file in files
   2:  
   3: group file.ToUpper() by Path.GetExtension(file);

 

与select类似, group结束一个查询语句,除非你使用”延续查

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号