在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 };
}
但首先我想把这些值添加到一个列表中,我该如何处理这个逻辑。。。有什么帮助吗???
好吧,经过后来的思考和集中精力,我发现我可以完成逻辑并添加到泛型列表"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
任何其他提出此解决方案的方式都将不胜感激。。。感谢