Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 使用MVC5和实体框架创建饼图_Linq_Entity Framework_Asp.net Mvc 5_Pie Chart - Fatal编程技术网

Linq 使用MVC5和实体框架创建饼图

Linq 使用MVC5和实体框架创建饼图,linq,entity-framework,asp.net-mvc-5,pie-chart,Linq,Entity Framework,Asp.net Mvc 5,Pie Chart,有没有人成功地用MVC5框架创建了一个免费或非常便宜的饼图 编辑: 这是我试图在视图中使用的代码,它不返回任何内容 @{ var dataSet = new DataSet(); var dataView = new DataView(dataSet.Tables["Request"]); var myChart = new System.Web.Helpers.Chart(width: 600, height:400) .AddTitle("Status

有没有人成功地用MVC5框架创建了一个免费或非常便宜的饼图

编辑: 这是我试图在视图中使用的代码,它不返回任何内容

@{
    var dataSet = new DataSet();
    var dataView = new DataView(dataSet.Tables["Request"]);
    var myChart = new System.Web.Helpers.Chart(width: 600, height:400)
        .AddTitle("Status Summary")
        .AddSeries(chartType: "Pie", name:"Requests", xValue: dataView, xField: "AnalystID", yValues: dataView, yFields: "RequestID")
        .Write();
}
这是我的模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DBMR.Models
{
    public class RequestStatusCount
    {
        public string StatusName { get; set; }
        public int StatusCount { get; set; }
    }
这是我的控制器:

    public ActionResult TestChart()
    {
        var items = db.Requests
        .Where(r => r.RequestID > 0)
        .GroupBy(r => new { r.Status.Name, r.StatusID })
        .Select(r => new RequestStatusCount
        {
            StatusName = r.Key.Name,
            StatusCount = r.Count()
        }).OrderByDescending(r => r.StatusCount);

        return View(items);
    }

MVC有一个图表助手,如果你不做一些有趣的高度互动的图表,你可以使用它

对于其他基于HTML5和JS/Jquery的免费/开源库签出

更新: 您需要提供数组,而不是将dataView作为数据源

在您的场景中

xValue=分析ID的数组


yValue=RequestID的数组参见我的简单解决方案,尽管使用列作为图表类型

public ActionResult DrawChart()
        {
            var report = Db.Candidateresults.GroupBy(i => i.subject)
                            .Select(g => new {
                             Subjects = g.Key,
                             TotalScore = g.Sum(i=>i.score)
                            });

            var chart = new Chart(width: 500, height: 400, theme:ChartTheme.Green);
            foreach(var item in report)
            {

                chart.AddTitle("Statistical Performance Report")

                .AddSeries(
                 chartType: "column",            
                 xValue: new[] {item.Subjects },
                 yValues: new[] {item.TotalScore }

                ).GetBytes("png");

            }

            return File("chart", "image/bytes");          

}

有很多方法可以做到这一点,您至少应该详细说明一些技术细节。由于您已经提到ASP.NET,是否要在服务器端将图表呈现为静态图像?或者,您希望在客户端使用一些时髦的JavaScript库动态地绘制它吗?或者您想使用纯JavaScript?你可以找到一个使用D3.js库构建的动态饼图的好例子。我在我的原始帖子中添加了一些上下文。在发布任何问题之前,请阅读Stackoverflow教程。我在我的原始帖子中添加了一些上下文