C#中查询表达式GroupBy的使用方法
在C#中,查询表达式(GroupBy)可以用于将序列按照指定的属性分组,使我们可以更方便地对数据进行分析和处理。本篇攻略将带你详细了解C#中查询表达式的使用方法,并提供两个实际应用的示例。
GroupBy的基本使用方法
GroupBy的基本语法如下所示:
var groupedData = from item in data
group item by item.Property into groupResult
select new
{
Property = groupResult.Key,
Count = groupResult.Count(),
Data = groupResult.ToList()
};
其中,data
为要分组的数据集合,Property
为要分组的属性,groupResult
为分组后的结果,groupedData
为最终返回的分组数据。
在分组结果groupResult
中,可以通过Key属性获取分组的属性值,也可以使用Count()方法获取每个分组的数量。另外,通过ToList()方法可以将每个分组的数据转为一个列表。
示例一:按照学科统计分数平均分
假设我们有一个包含学生姓名、学科和成绩的数据表格,现在需要统计每个学科的平均分。可以使用GroupBy来实现这个功能。代码示例如下:
class Program
{
static void Main(string[] args)
{
List<Score> scores = new List<Score>()
{
new Score("Tom", "Math", 80),
new Score("Tom", "English", 85),
new Score("Tom", "Science", 90),
new Score("Lucy", "Math", 85),
new Score("Lucy", "English", 90),
new Score("Lucy", "Science", 95),
new Score("John", "Math", 95),
new Score("John", "English", 80),
new Score("John", "Science", 90)
};
var groupResult = from score in scores
group score by score.Subject into g
select new
{
Subject = g.Key,
Average = g.Average(score => score.Point)
};
foreach (var result in groupResult)
{
Console.WriteLine("{0}平均分:{1}", result.Subject, result.Average);
}
}
}
class Score
{
public string Name { get; set; }
public string Subject { get; set; }
public int Point { get; set; }
public Score(string name, string subject, int point)
{
Name = name;
Subject = subject;
Point = point;
}
}
输出结果如下:
Math平均分:86.6666666666667
English平均分:85
Science平均分:91.6666666666667
示例二:按照省份统计销售额
假设我们有一个包含省份、城市和销售额的数据表格,现在需要统计每个省份的总销售额。可以使用GroupBy来实现这个功能。代码示例如下:
class Program
{
static void Main(string[] args)
{
List<Sale> sales = new List<Sale>()
{
new Sale("Beijing", "Beijing", 1000),
new Sale("Beijing", "Tianjin", 500),
new Sale("Shanghai", "Shanghai", 800),
new Sale("Shanghai", "Hangzhou", 600),
new Sale("Shanghai", "Ningbo", 400),
new Sale("Guangdong", "Guangzhou", 1200),
new Sale("Guangdong", "Shenzhen", 1800),
new Sale("Guangdong", "Dongguan", 1000)
};
var groupResult = from sale in sales
group sale by sale.Province into g
select new
{
Province = g.Key,
TotalSales = g.Sum(sale => sale.Amount)
};
foreach (var result in groupResult)
{
Console.WriteLine("{0}总销售额:{1}", result.Province, result.TotalSales);
}
}
}
class Sale
{
public string Province { get; set; }
public string City { get; set; }
public int Amount { get; set; }
public Sale(string province, string city, int amount)
{
Province = province;
City = city;
Amount = amount;
}
}
输出结果如下:
Beijing总销售额:1500
Shanghai总销售额:1800
Guangdong总销售额:3000
以上就是C#中查询表达式(GroupBy)的基本使用方法和两个实际应用的示例,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#中查询表达式GroupBy的使用方法 - Python技术站