C# MVC - 从循环中的变量绘制条形图

本文关键字:变量 绘制 条形图 循环 MVC | 更新日期: 2023-09-27 18:32:00

我的问题是回答:在模型的局部视图中显示系统.Web.帮助程序.图表

@{
    var myChart = new Chart(width: 600, height: 400)
        .AddTitle("Chart Title")
        .AddSeries(
            name: "Employee",
            xValue: new[] {  "Peter", "Andrew", "Julie", "Mary", "Dave" },
            yValues: new[] { "2", "6", "4", "5", "3" })
        .Write();
}

有没有人能够使用 xValue 和 yValue 中循环中的值。目前在示例中,我发现所有值都是硬编码的。

我想使用 item.season 作为 X 和 item.year 作为 Y 从下面的 foreach 语句(第一次收集主题,第二次收集年份和季节):

string json2 = File.ReadAllText(@"C:'Temp'Assess.json");
var root = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<List<WebApplication1.Models.SchoolSubject>>(json2);
        foreach (var subject in root)
        {
            <h2>@Html.Raw(subject.Subject)</h2>
            foreach (var item in subject.AppScores)
            {
               <p>@Html.Raw(item.Season)</p> 
                <p>@Html.Raw(item.year)</p>
                <p>@Html.Raw(item.value)</p>
                }
            }

包含类代码的模型:

public class SchoolSubjectAppScore
    {
        public string Season { get; set; }
        public string year { get; set; }
        public string value { get; set; }
    }
    public class SchoolSubject
    {
        public SchoolSubject() { this.AppScores = new List<SchoolSubjectAppScore>(); }
        public string Subject { get; set; }
        public List<SchoolSubjectAppScore> AppScores { get; set; }
    }

我拥有的 JSON 文件是:

[{"Subject": "English","AppScores": [{"Season": "Winter","year": "2009", "value" : "20" }, {"Season": "Summer","year": "2009", "value" : "38"}]}, {"Subject": "Maths","AppScores": [{"Season": "Winter","year": "2009", "value" : "10"}, {"Season": "Summer","year": "2009", "value" : "27"}]}]

我想要的图表上的输出是两个系列 - 数学/英语,xValue - 季节/年份和 yValue - 值。

我的任何想法都到处寻求帮助。

C# MVC - 从循环中的变量绘制条形图

这很容易。您只需要在循环中将 json 中的Seasonyear数据添加到List即可。获得List后,您可以将其转换为数组并将其分配给图表。请参阅下面的更新代码。

string json2 = File.ReadAllText(@"C:'Temp'Assess.json");
var root = new System.Web.Script.Serialization.JavaScriptSerialize().Deserialize<List<WebApplication1.Models.SchoolSubject>>(json2);
var seasons = new List<string>();
var years = new List<string>();
    foreach (var subject in root)
    {
        <h2>@Html.Raw(subject.Subject)</h2>
        foreach (var item in subject.AppScores)
        {
            <p>@Html.Raw(item.Season)</p> 
            <p>@Html.Raw(item.year)</p>
            seasons.Add(item.Season);
            years.Add(item.year);
            }
        }

完成上述操作后,您可以将seasonsyears添加到图形中。

@{
var myChart = new Chart(width: 600, height: 400)
    .AddTitle("Chart Title")
    .AddSeries(
        name: "Employee",
        xValue: seasons.ToArray(),
        yValues: years.ToArray())
    .Write();
}