一、准备数据
画图首先需要有数据,本教程使用Bogus生成测试数据
这个教程建了一个demo类,结构如下所示:
public class Demo
{
public int? Id { get; set; }
public string? City { get; set; }
}
只有两个属性,一个Id,一个City
使用Bogus生成测试数据的代码如下:
Randomizer.Seed = new Random(8675309);
var Cities = new[] { "武汉", "长沙", "福州", "南昌", "厦门", "泉州" };
var orderIds = 0;
var demoGenerator = new Faker<Demo>("zh_CN")
.RuleFor(x => x.Id, f => orderIds++)
.RuleFor(x => x.City, f => f.PickRandom(Cities));
var demos = demoGenerator.Generate(1000);
指定Randomizer.Seed可以使生成的测试数据不变,具体怎么使用bogus不是本文讨论的内容,暂且不表。
查看生成的内容

本教程假定需求是要统计每个City出现的次数,并绘制图表
对列表中City字段进行去重,可以使用linq中的distinct方法,如下所示:
var regionList = demos.Select(x => x.City).Distinct().ToList();
查看regionList的结果

然后利用linq中的count方法统计每个City出现的次数,为了方便画图,这里新建了一个DataPoint类
DataPoint类的结构如下所示:
public class DataPoint
{
public string? name { get; set; } // X轴值
public int? value { get; set; } // Y轴值
}
统计各个City出现的次数,并写入DataPoint类列表中,代码如下所示:
for (int i = 0; i < regionList.Count; i++)
{
DataPoint point = new DataPoint();
point.name = regionList[i];
int count = demos.Count(x => x.City == regionList[i]);
point.value = count;
dataPoints.Add(point);
}

文章介绍了如何使用Bogus生成测试数据,然后通过Demo类统计City字段出现次数,用ChartControl控件实现折线图、柱状图和饼状图的绘制,展示了详细的代码实例。
最低0.47元/天 解锁文章
716





