在mvc中以图表形式显示年龄组

本文关键字:显示 年龄组 mvc | 更新日期: 2023-09-27 18:00:51

我正在尝试计算数据库中的年龄组,并将其显示在图表上。

我在下面有这个代码,可以在条形图上显示药物的类别和数量。

public JsonResult DrugStatus()
    {
        List<Drug> drg = new List<Drug>();
        DataContext da = new DataContext();
        drg = da.Drugs.ToList();
        var chartData = new object[drg.Count + 1];
        chartData[0] = new object[]{
            "Drug Group",
            "Drug Quantity"
        };
        int count = 0;
        foreach (var i in drg)
        {
            count++;
            chartData[count] = new object[] { i.DrugCategory, i.Quantity };
        }
        return new JsonResult { Data = chartData, JsonRequestBehavior = JsonRequestBehavior.AllowGet};
    }

我想为数据库中不同年龄段的客户做同样的事情,但我在逻辑上遇到了问题。

以下是我所做的

public JsonResult AgeGroup()
    {
        List<Patient> patient = new List<Patient>();
        DataContext da = new DataContext();
        patient = da.Patients.ToList();
        var select = (from a in da.Patients
                      group a by a.Age into g
                      select new
                      {
                          Age = g.Key,
                          Age1 = g.Where(a => Convert.ToInt32(a.Age) >= 13 && Convert.ToInt32(a.Age) <= 18).Count()
                      });
        var chartData = new object[patient.Count + 1];
        chartData[0] = new object[]{
            "Age Group"
        };
        string age1, age2, age3, age4, age5;
        foreach (Patient p in da.Patients)
        {
            int Age = Convert.ToInt32(p.Age);
            if ((Age >= 13) && (Age <= 18))
            {
                age1 = "13 - 18";
            }
            if ((Age >= 19) && (Age <= 30))
            {
                age2 = "19 - 30";
            }
            if ((Age >= 31) && (Age <= 45))
            {
                age3 = "31 - 45";
            }
            if ((Age >= 46) && (Age <= 60))
            {
                age4 = "46 - 60";
            }
            if (Age >= 61)
            {
                age5 = "61 Above";
            }
        }
    }

现在我想把它添加到一个列表中,这样我就可以像在DrugStatus((中那样循环它

foreach (var i in drg)
    {
        count++;
        chartData[count] = new object[] { i.DrugCategory, i.Quantity };
    }

但首先我想把这些值添加到一个列表中,我该如何处理这个逻辑。。。有什么帮助吗???

在mvc中以图表形式显示年龄组

好吧,经过后来的思考和集中精力,我发现我可以完成逻辑并添加到泛型列表"class"中,我通过创建一个类来存储值,如下所示。

public class AgeClass
    {
        public string AgeG { get; set; }
        public int count { get; set; }
        public AgeClass()
        {
            AgeG = "";
            count = 0;
        }
        public AgeClass(string Age, int C)
        {
            AgeG = Age;
            count = C;
        }
    }

之后,我继续使用JsonResult逻辑,编写逻辑以获得特定的年龄组,并计算有多少人属于该特定的年龄段,如下所示。。。

public JsonResult AgeGroup()
    {
        List<AgeClass> agc = new List<AgeClass>();
        DataContext da = new DataContext();
        string age1 = "", age2 = "", age3 = "", age4 = "", age5 = "";
        int Count1 = 0, Count2 = 0, Count3 = 0, Count4 = 0, Count5 = 0;
        foreach (Patient p in da.Patients)
        {
            int Age = Convert.ToInt32(p.Age);
            if ((Age >= 13) && (Age <= 18))
            {
                age1 = "13 - 18";
                Count1++;
            }
            if ((Age >= 19) && (Age <= 30))
            {
                age2 = "19 - 30";
                Count2++;
            }
            if ((Age >= 31) && (Age <= 45))
            {
                age3 = "31 - 45";
                Count3++;
            }
            if ((Age >= 46) && (Age <= 60))
            {
                age4 = "46 - 60";
                Count4++;
            }
            if (Age >= 61)
            {
                age5 = "61 Above";
                Count5++;
            }
        }

在得到所有这些之后,我继续将结果添加到我之前创建的AgeClass中。

 AgeClass obj1 = new AgeClass(age1, Count1);
        AgeClass obj2 = new AgeClass(age2, Count2);
        AgeClass obj3 = new AgeClass(age3, Count3);
        AgeClass obj4 = new AgeClass(age4, Count4);
        AgeClass obj5 = new AgeClass(age5, Count5);
        agc.Add(obj1);
        agc.Add(obj2);
        agc.Add(obj3);
        agc.Add(obj4);
        agc.Add(obj5);

然后创建了chartData并将值插入其中,并在AgeClass中循环,AgeClass已经保存了我年龄组的数据。。

var chartData = new object[agc.Count + 1];
        chartData[0] = new object[]{
            "Age Group",
            "Age Count"
        };
        int count = 0;
        foreach (var i in agc)
        {
            count++;
            chartData[count] = new object[] { i.AgeG, i.count };
        }
        return new JsonResult { Data = chartData, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }

并将其显示在我的条形图视图中,效果良好,我希望这能帮助到别人。

还有Carly Rae Jepsen"Emotions"专辑的道具,我正在重复这张专辑,还有巧克力城"The Indestructible Choc Boi Nation"专辑的音乐,帮助程序员思考lol

任何其他提出此解决方案的方式都将不胜感激。。。感谢