LINQ查询group子句
在LINQ查询表达式中,group子句对查询的结果进行分组,并返回元素类型为IGrouping<TKey,TElement>的对象序列。
注意:TKey指定IGrouping<TKey,TElement>的键的类型,TElement指定IGrouping<TKey,TElement>的值的类型。访问IGrouping<TKey,TElement>类型的值的方法与访问IEnumerable<T>的元素的方式非常相似,在此不做详细介绍。
下面的代码实例中的GroupQuery()函数演示了group子句对查询的结果进行分组的方法,具体步骤说明如下。
(1)创建数据类型为List<UserInfo>的数据源users。
(2)使用group子句对结果进行分组。其中,根据用户名称(Username属性的值)的序号的奇偶进行分组。
(3)使用嵌套foreach语句输出查询的结果。
注意:查询结果values的数据类型为IEnumerable<IGrouping<bool,UserInfo>>。因此,输出查询结果信息语句需要使用两个foreach语句。第一个foreach语句得到IGrouping<bool,UserInfo>类型的元素,第二个foreach语句得到UserInfo类型的元素。
private void GroupQuery() { ///构建数据源 List<UserInfo> users = new List<UserInfo>(); for (int i = 1; i < 10; i++) { users.Add(new UserInfo(i,"User0" + i.ToString(),"User0" + i.ToString() + "@web.com")); } ///根据用户的Username的值进行分组 var values = from u in users group u by Int32.Parse(u.Username.Substring(u.Username.Length - 2)) % 2 == 0; ///显示查询结果 foreach (var v in values) { foreach (UserInfo u in v) { Response.Write(u.Username + "</br>"); } } }
运行上述实例代码,在IE浏览器中查看group子句查询的结果,如图所示。
来源:http://blog.csdn.net/linqmail/article/details/2301229
加支付宝好友偷能量挖...