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();
}
}
运行:
点击回车: