在Linq查询语句中,group子句主要作用是对查询的结果集进行分组。并返回元素类型为IGrouping<TKey,TElement>的对象序列。
下面我们在代码实例中创建一个GroupQuery方法来演示group子句的用法。
1、创建数据类型为List<UserInfo>的数据源users。
2、使用group子句对结果集进行分组,根据用户名称的奇偶来分组。
3、使用嵌套的foreach语句输出。
1 private void GroupQuery() 2 { 3 4 List<UserBaseInfo> users = new List<UserBaseInfo>(); 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 users 13 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("-----------------"+ "</br>"); 18 foreach (UserBaseInfo u in v) 19 { 20 Response.Write(u.UserName+"</br>"); 21 } 22 23 } 24 }
因为查询结果values的结果为IEnumerable<IGroupint<bool,UserBaseInfo>>。因此输出查询结果信息需要使用2个foreach语句。第一个foreach语句得到IGrouping<bool,UserBaseInfo>类型的元素,第二个foreach语句得到UserBaseInfo类型的元素。