使用带有动态数据的Kendo饼图

时间:2015-05-21 14:52:57

标签: c# asp.net-mvc-4 kendo-ui telerik

我试图使用饼图来显示统计数据。数据在我的表格中,我这样得到:

public class StatisticsAccess
{
    public static object getTypesForStatistics()
    {
        var dbo = new UsersContext();
        var all = (from a in dbo.Note
                      select a).ToList();
        var results = all.GroupBy(item => item.language.lang)
                         .Select(g => new
                         {
                             language = g.Key,
                             Count = g.Select(l => l.language.lang).Count()
                         });
        return (results.ToList());

    }
}

控制器:

public ActionResult Index()
{
    var results = Json(DAL.StatisticsAccess.getTypesForStatistics());
    return View();      
}

查看:

  @(Html.Kendo().Chart()
        .Name("chart")
                .Title(title => title
                    .Text("Share of Internet Population Growth, 2007 - 2012")
                    .Position(ChartTitlePosition.Bottom))
        .Legend(legend => legend
            .Visible(false)
        )
        .Series(series => {
            series.Pie(model => model.language, model => model.Count);
        })
        .DataSource(ds => ds.Read(read => read.Action("index", "Statistics")))
        .Tooltip(tooltip => tooltip
            .Visible(true)
            .Format("{0}%")
        )


    )

我的视图中有一些语法错误,在系列属性中:

  

无法将lambda表达式转换为" string"

任何人都可以向我解释我应该遵循的语法来修复此错误吗? THX

1 个答案:

答案 0 :(得分:2)

我认为你在LINQ中以错误的方式执行Count。

Count = g.Select(l => l.language.lang).Count()

没有必要选择此处,因为它们已经是您的.GroupBy

应该是:

Count = g.Count()

Using GroupBy, Count and Sum in LINQ Lambda Expressions