下面是详细讲解“C#实现泛型List分组输出元素的方法”的完整攻略。
1. 题目背景
在 C# 中, 泛型(Generic)是指写代码时不必指定具体的类型,而是在使用时在指定类型。List 是 C# 中常用的泛型集合类型。当我们需要对一个 List 进行分组后输出元素,就需要用到泛型 List 分组的方法。
2. 泛型 List 分组的方法
2.1 GroupBy() 方法
GroupBy() 是用来对一个集合进行分组的方法。GroupBy() 能够根据指定的键值将元素分组,并返回一个包含这些分组的集合。
var groupList = list.GroupBy(x => x.Key);
2.2 foreach 遍历
通过 foreach 循环遍历分组后的集合 groupList,然后再通过 foreach 遍历 groupList 对应的键值集合,即可输出每个分组的元素。
foreach (var group in groupList)
{
Console.WriteLine("Key: {0}", group.Key);
foreach (var item in group)
{
Console.WriteLine(item.Value);
}
}
3. 示例说明
下面给出两个示例,分别演示了如何对一个泛型 List 进行分组输出。
3.1 示例1
假设有一个 Student 类,其中包含了姓名和年级两个属性。现在有一个 Student 类型的 List,需要按照年级进行分组输出。
class Student
{
public string Name { get; set; }
public int Grade { get; set; }
}
List<Student> students = new List<Student>()
{
new Student(){ Name = "张三", Grade = 1},
new Student(){ Name = "李四", Grade = 2},
new Student(){ Name = "王五", Grade = 1},
new Student(){ Name = "赵六", Grade = 2},
new Student(){ Name = "钱七", Grade = 3},
};
var studentGroups = students.GroupBy(x => x.Grade);
foreach (var group in studentGroups)
{
Console.WriteLine("Grade: {0}", group.Key);
foreach (var item in group)
{
Console.WriteLine(item.Name);
}
}
输出结果为:
Grade: 1
张三
王五
Grade: 2
李四
赵六
Grade: 3
钱七
3.2 示例2
假设有一个 Product 类,其中包含了名称、分类和价格三个属性。现在有一个 Product 类型的 List,需要按照分类进行分组输出。同时,将每个分类中价格最高的商品输出。
class Product
{
public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
}
List<Product> products = new List<Product>()
{
new Product(){ Name = "蓝牙耳机", Category = "电子产品", Price = 98.50M},
new Product(){ Name = "尤克里里", Category = "乐器", Price = 250.00M},
new Product(){ Name = "短袖T恤", Category = "服装", Price = 58.00M},
new Product(){ Name = "草莓味牙膏", Category = "个人清洁", Price = 9.90M},
new Product(){ Name = "牛肉干", Category = "零食", Price = 25.00M},
new Product(){ Name = "电热水壶", Category = "电器", Price = 120.00M},
new Product(){ Name = "营养快线", Category = "饮料", Price = 5.50M},
new Product(){ Name = "钢笔", Category = "文具", Price = 45.00M},
};
var productGroups = products.GroupBy(x => x.Category);
foreach (var group in productGroups)
{
Console.WriteLine("Category: {0}", group.Key);
Product maxProduct = null;
foreach (var item in group)
{
Console.WriteLine(item.Name);
if (maxProduct == null || item.Price > maxProduct.Price)
{
maxProduct = item;
}
}
Console.WriteLine("Max Price: {0}", maxProduct.Price);
Console.WriteLine("--------------------");
}
输出结果为:
Category: 电子产品
蓝牙耳机
Max Price: 98.50
--------------------
Category: 乐器
尤克里里
Max Price: 250.00
--------------------
Category: 服装
短袖T恤
Max Price: 58.00
--------------------
Category: 个人清洁
草莓味牙膏
Max Price: 9.90
--------------------
Category: 零食
牛肉干
Max Price: 25.00
--------------------
Category: 电器
电热水壶
Max Price: 120.00
--------------------
Category: 饮料
营养快线
Max Price: 5.50
--------------------
Category: 文具
钢笔
Max Price: 45.00
--------------------
这就是“C#实现泛型List分组输出元素的方法”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现泛型List分组输出元素的方法 - Python技术站