在LINQ中汇总子列表可以使用GroupBy和Select方法来实现。下面是一个示例代码:
var data = new List<Student>
{
new Student { Name = "Alice", Subject = "Math", Score = 80 },
new Student { Name = "Alice", Subject = "English", Score = 90 },
new Student { Name = "Bob", Subject = "Math", Score = 75 },
new Student { Name = "Bob", Subject = "English", Score = 85 },
new Student { Name = "Bob", Subject = "Science", Score = 70 }
};
var summary = data.GroupBy(s => s.Name)
.Select(g => new
{
Name = g.Key,
TotalScore = g.Sum(s => s.Score),
Subjects = g.Select(s => s.Subject).ToList()
})
.ToList();
foreach (var item in summary)
{
Console.WriteLine($"Name: {item.Name}");
Console.WriteLine($"Total Score: {item.TotalScore}");
Console.WriteLine("Subjects:");
foreach (var subject in item.Subjects)
{
Console.WriteLine(subject);
}
Console.WriteLine();
}
public class Student
{
public string Name { get; set; }
public string Subject { get; set; }
public int Score { get; set; }
}
上述代码中,我们首先使用GroupBy方法按照学生姓名进行分组,然后使用Select方法创建一个新的匿名类型对象,其中包含姓名、总分和科目列表。最后,通过遍历summary列表,输出每个学生的姓名、总分和科目列表。
这个方法适用于需要对子列表进行汇总的场景,比如学生成绩统计、订单商品汇总等。
腾讯云相关产品和产品介绍链接地址:
请注意,以上仅为示例产品,实际应根据具体需求选择适合的腾讯云产品。
领取专属 10元无门槛券
手把手带您无忧上云