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

加支付宝好友偷能量挖...


评论(0)网络
阅读(108)喜欢(0)asp.net-linq