2014-10-08 2 views
1

Я унаследовал некоторый код, который имеет синтаксис, который я не понимаю, но его нужно изменить. Строка, которая начинается с 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, теперь я получаю «нет данных», так что не работает.

ответ

2

Вы можете использовать лямбда-выражения для достижения этой цели:

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

return Json(data2); 
+0

Высокий. Большое спасибо! Одна коррекция = «x.Total» вместо «i.Total» – Geminirand

+0

Исправлена, рада помочь :) – Khan

Смежные вопросы