C# 在MVC图表中按月份分组日期

C# 在MVC图表中按月份分组日期,c#,asp.net-mvc,linq,asp.net-mvc-5,C#,Asp.net Mvc,Linq,Asp.net Mvc 5,我想统计一个月内新用户的数量。然而,这是我收到的输出。我如何将重复的月份分为“一月”、“十一月”。非常感谢你的帮助 public ActionResult UserPerMonth() { var_con=新的数据库实体(); ArrayList xValue=新的ArrayList(); ArrayList yValue=新的ArrayList(); var结果=(从c中选择c); results.ToList().ForEach(rs=>yValue.Add(rs.id.ToString(

我想统计一个月内新用户的数量。然而,这是我收到的输出。我如何将重复的月份分为“一月”、“十一月”。非常感谢你的帮助

public ActionResult UserPerMonth()
{
var_con=新的数据库实体();
ArrayList xValue=新的ArrayList();
ArrayList yValue=新的ArrayList();
var结果=(从c中选择c);
results.ToList().ForEach(rs=>yValue.Add(rs.id.ToString().Count());
results.ToList().ForEach(rs=>xValue.Add(rs.date.Value.ToString(“mmmyyy”));
var图表=新图表(宽度:300,高度:200)
.AddTitle(“每月用户数”)
.AddLegend()
.AddSeries(
图表类型:“列”,
xValue:xValue,
Y值:Y值)
.GetBytes(“png”);
返回文件(图表,“图像/png”);
}

可能有一种更简洁的方法,但这对我很有用。为图表数据添加一个类,例如

public class ChartData
{
    public string Month { get; set; }
    public int Count { get; set; }
}
然后,您可以使用带有groupby和count的linq查询来获取数据并将其放入ChartData类型,然后将这些值移动到相关轴:

public ActionResult UserPerMonth()
{

    var _con = new DBEntities();
    ArrayList xValue = new ArrayList();
    ArrayList yValue = new ArrayList();

    var results = (from c in _con.Users select c);

    var axis = results.GroupBy(r => r.date.Value.ToString("MMM-yyyy"))
            .Select(r => new ChartData
            {
                Month = r.Key,
                Count = r.Count()
            }).ToList();

    foreach (var item in axis)
    {
        xValue.Add(item.Month);
        yValue.Add(item.Count);
    }


    var chart = new Chart(width: 300, height: 200)
        .AddTitle("Users per month")
        .AddLegend()
        .AddSeries(
            chartType: "Column",
            xValue: xValue,
            yValues: yValue)
        .GetBytes("png");
    return File(chart, "image/png");
}

谢谢你的帮助,我想这部分的Month=n.Key,Count=n.Count()有一个输入错误,但是代码没有显示图表@JamesApologies,是的,已经修复了输入错误-你能试试吗。如果没有,请设置断点并查看轴的值是多少?