在Linq查询语句中,group子句主要作用是对查询的结果集进行分组。并返回元素类型为IGrouping<TKey,TElement>的对象序列。
下面我们在代码实例中创建一个GroupQuery方法来演示group子句的用法。
1、创建数据类型为List<UserInfo>的数据源users。
2、使用group子句对结果集进行分组,根据用户名称的奇偶来分组。
3、使用嵌套的foreach语句输出。
1 private void GroupQuery() 2 { 3 4 Listusers = new List (); 5 6 for(int i=0;i<10;i++) 7 { 8 users.Add(new UserBaseInfo(i,"users0"+i.ToString(),"user0"+i.ToString()+"@web.com")); 9 }10 11 //根据用户的username值进行分组12 var results = from u in users13 group u by Int32.Parse(u.UserName.Substring(u.UserName.Length - 2))%2 == 0;14 15 foreach (var v in results)16 {17 Response.Write("-----------------"+ " ");18 foreach (UserBaseInfo u in v)19 {20 Response.Write(u.UserName+" ");21 }22 23 }24 }
因为查询结果values的结果为IEnumerable<IGroupint<bool,UserBaseInfo>>。因此输出查询结果信息需要使用2个foreach语句。第一个foreach语句得到IGrouping<bool,UserBaseInfo>类型的元素,第二个foreach语句得到UserBaseInfo类型的元素。