Не уверен, но это так:
select new { Count = r.SiteHours, Value = r.SiteHours };
Не должно быть: ( SiteName ):
select new { Count = r.SiteHours, Value = r.SiteName };
Кроме того, ваше наименование очень плохоеесли я могу сказать.Это не сделает вашу будущую работу легче.Попробуйте назвать свои переменные и объекты более конкретно.
РЕДАКТИРОВАТЬ:
- Вы можете использовать регионы вместо комментариев кода, например, которые будут разделять / упорядочивать / просматривать части кода /разделы намного проще
- Имена ваших переменных лучше сделают вашу жизнь проще, но и другим людям, работающим над вашим кодом / с ним, будет проще
Я бы изменил ваш текущий код на это:
Обратите внимание, что у меня нет редактора и что могут быть синтаксические ошибки
#region Holiday Pie Chart
ViewBag.msg = db.HoursPerSites.Count().ToString();
var queryHoursPerSites = from r in db.HoursPerSites
select new { Count = r.SiteHours, Value = r.SiteHours };
var resultsQueryHoursPerSites = queryHoursPerSites.ToList(); // or HoursPerSitesCollection
var holidayPieChart = new object[resultsQueryHoursPerSites.Count];
int counter = 0; //
foreach (var record in resultsQueryHoursPerSites)
{
holidayPieChart[counter] = new object[] { record.Value.ToString(), record.Count };
counter++;
}
string deserialisedResults = JsonConvert.SerializeObject(holidayPieChart, Formatting.None);
// no idea what dataj2 is here ...
ViewBag.dataj2 = new HtmlString(deserialisedResults);
#endregion
Я уверен, что тамэто даже больше, чтобы «улучшить» или «изменить», но это, на мой взгляд, уже будет улучшением.
Я уверен, что другие могут еще лучше уточнить то, что я предлагаю здесь:)