Linq中的查询语句要以from开始,以select或者是group来结束,返回结果集。

group用来返回分组后的结果。

group返回的 IGrouping<out TKey, out TElement> 类型的数据。TKey为每一组的键,TElement为每一组中是数据项。

例子如下:

一、首先创建控制台应用程序:DemoGroup_1

class Program
{
static void Main(string[] args)
{
// 填充数据
List<PersonInfo> pList = new List<PersonInfo>()
{
new PersonInfo{ Name="周瑜", Country="", Official="都督", Salary=8000},
new PersonInfo{ Name="典韦", Country="", Official="上将", Salary=8000},
new PersonInfo{ Name="张飞", Country="", Official="上将", Salary=10000},
new PersonInfo{ Name="曹操", Country="", Official="皇帝", Salary=10000},
new PersonInfo{ Name="许褚", Country="", Official="上将", Salary=8000},
new PersonInfo{ Name="关羽", Country="", Official="上将", Salary=10000},
new PersonInfo(){ Name="刘备", Country="", Official="皇帝", Salary=10000},
new PersonInfo{ Name="孙权", Country="", Official="皇帝", Salary=10000},
new PersonInfo{ Name="陆逊", Country="", Official="都督", Salary=8000}

};

var query = from result in pList
group result by result.Country;

//遍历分组数据
foreach (IGrouping<string, PersonInfo> guestGroup in query)
{
//输出当前分组的键值
Console.WriteLine(string.Format("分组键:{0} \n", guestGroup.Key));

//遍历组内元素
foreach (var g in guestGroup)
Console.WriteLine(string.Format("{0}的薪水是:{1}", g.Name, g.Salary));
Console.WriteLine("\n**********************************\n");
}

Console.ReadKey();

//按照薪水
var query_1 = from result in pList
group result by result.Salary > 8000;


//遍历分组数据
foreach (var guestGroup in query_1)
{
//输出当前分组的键值
Console.WriteLine(string.Format("薪水是否是大于8000:{0} \n", guestGroup.Key));

//遍历组内元素
foreach (var g in guestGroup)
Console.WriteLine(string.Format("{0} 的薪水是:{1}", g.Name, g.Salary));
Console.WriteLine("\n**********************************\n");
}

Console.ReadKey();
}
}

运行:

点击回车:


 

 

 

posted on 2012-02-26 22:00  金丝猴  阅读(361)  评论(0编辑  收藏  举报