匿名类型 - 如何动态创建?

时间:2014-10-08 14:02:12

标签: asp.net-mvc-4 c#-4.0 anonymous-types

我继承了一些具有我不理解但需要改变的语法的代码。以var data = new[]开头的行似乎是匿名类型?

如何将其改为动态而不是硬编码为3条记录?

public JsonResult GetPieChartData()
{
    var myList = db.Database.SqlQuery<Dashboard>("EXEC [DBO].[uspDivisionDashboard2] {0}, {1}",
        Environment.UserName, "GUID").ToArray();

    var data = new[] 
    {
        //these will get overwritten below
        new { Name = "Row 1", Value = 1 },
        new { Name = "Row 2", Value = 2 },
        new { Name = "Row 3", Value = 3 },
    };  

    int j = 0;
    foreach (var i in myList)
    {
        data[j] = new { Name = i.Stat, Value = i.Total };
        j++;
    }

    return Json(data);
}

我尝试将其转换为字典但是当它传递到我的Google图表时,我现在得到了#34;没有数据&#34;所以这不起作用。

1 个答案:

答案 0 :(得分:2)

您可以使用lambda表达式来完成此任务:

var data2 = myList.Select(x => new { Name = x.Stat, Value = x.Total }).ToArray();

return Json(data2);