C# Linq中的GroupBy()方法是一个非常有用的聚合方法,它可以将集合中的元素按照指定的键(key)进行分组,从而实现数据的聚合和统计。下面就是C# Linq的GroupBy()的完整攻略:
1. GroupBy()语法格式
GroupBy()方法的语法格式如下:
var groups = collection.GroupBy(x => x.Key);
其中,“collection”表示待分组的集合,“x”表示集合中的每个元素,“x.Key”表示指定的分组键(key),“var groups”表示分组后的结果,即每个分组中的元素列表。
2. GroupBy()的基本使用方法
下面是GroupBy()方法的基本使用方法:
var students = new List<Student>
{
new Student {Name = "Tom", Grade = 1},
new Student {Name = "Jerry", Grade = 2},
new Student {Name = "Mickey", Grade = 1},
new Student {Name = "Donald", Grade = 2}
};
var groups = students.GroupBy(s => s.Grade);
foreach (var group in groups)
{
Console.WriteLine("Grade {0}:", group.Key);
foreach (var student in group)
{
Console.WriteLine(" {0}", student.Name);
}
}
以上代码中,我们首先定义了一个名为“students”的学生列表,每个学生包含姓名和年级两个字段。然后我们使用GroupBy()方法将学生列表按照年级进行分组,最后通过foreach遍历输出每个组的年级和组成员。
3. GroupBy()的高级应用方法
GroupBy()方法还有许多高级应用方法,比如可以在分组后对每个组进行统计、筛选等操作。下面是一个分组求和的示例:
var orders = new List<Order>
{
new Order {Id = 1, Product = "Shoes", Price = 59.9m, Quantity = 2, Customer = "Tom"},
new Order {Id = 2, Product = "Shirt", Price = 19.9m, Quantity = 3, Customer = "Jerry"},
new Order {Id = 3, Product = "Pants", Price = 39.9m, Quantity = 1, Customer = "Tom"},
new Order {Id = 4, Product = "Hat", Price = 9.9m, Quantity = 5, Customer = "Tom"},
};
var summary = orders
.GroupBy(o => o.Customer)
.Select(g => new
{
Customer = g.Key,
TotalQuantity = g.Sum(o => o.Quantity),
TotalPrice = g.Sum(o => o.Price * o.Quantity)
});
foreach (var item in summary)
{
Console.WriteLine("{0}: {1} items, total price: {2:C}", item.Customer, item.TotalQuantity, item.TotalPrice);
}
以上代码中,我们首先定义了一个名为“orders”的订单列表,每个订单包含订单号、产品名称、价格、数量和顾客姓名等字段。然后我们使用GroupBy()方法将订单列表按照顾客姓名进行分组,然后使用Select方法对每个组进行统计,包括顾客姓名、总数量和总价格,最后遍历输出每个组的统计结果。
4. 总结
本文主要介绍了C# Linq中的GroupBy()方法的基本语法和高级应用方法,包括分组和统计等操作。通过本文的学习,相信读者已经理解了GroupBy()方法的使用方法,并可以灵活运用到实际的开发项目中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Linq的GroupBy()方法 – 根据指定的键对序列中的元素进行分组 - Python技术站