Edit 3: Improved формулировка вопроса и примерыметод, который принимает LINQ IGrouping как параметр
У меня есть следующий Linq запрос, который использует группировку. Операции группировки и выбора сложны, поэтому я абстрагировал один из вариантов выбора метода, который делает некоторые варианты того, как визуализировать данные.
Мой запрос корректно работает внутри определения анонимной группы, но как только я набираю его для класса, чтобы передать его методу в качестве объекта группировки, он перестает группировать результаты.
public class TestController : Controller
{
public JsonResult ThisWorks()
{
var valueList = DataMocker.GetTestValues();
var group = from v in valueList.AsEnumerable()
where (v.Data != 0)
group v by new
{
Year = v.Fecha.Value.Year,
Trimester = string.Empty,
Month = v.Fecha.Value.Month,
Day = 0,
}
into g
select new SeriesDataPoint
{
y = g.OrderByDescending(obd => obd.Fecha)
.Select(obd => obd.Data.Value)
.FirstOrDefault(),
color = "black",
month = g.Key.Month,
year = g.Key.Year,
seriesName = "Test Series",
};
return Json(group, JsonRequestBehavior.AllowGet);
}
public JsonResult ThisDoesnt()
{
var valueList = DataMocker.GetTestValues();
var group = from v in valueList.AsEnumerable()
where (v.Data != 0)
group v by new Models.SeriesResultGroup
{
Year = v.Fecha.Value.Year,
Trimester = string.Empty,
Month = v.Fecha.Value.Month,
Day = 0,
}
into g
select new SeriesDataPoint
{
y = RenderDataPoint(valueList, g),
color = "black",
month = g.Key.Month,
year = g.Key.Year,
seriesName = "Test Series",
};
return Json(group, JsonRequestBehavior.AllowGet);
}
public static decimal? RenderDataPoint(List<Models.ValoresResultSet> valores, IGrouping<Models.SeriesResultGroup, Models.ValoresResultSet> group)
{
return group.OrderByDescending(obd => obd.Fecha)
.Select(obd => obd.Data.Value)
.FirstOrDefault();
}
}
- Это правильный выход: https://dl.dropbox.com/u/9764/Thisworks.txt
- Это неправильный выход: https://dl.dropbox.com/u/9764/ThisDoesnt.txt
«Не работает» не является описанием ошибки. Пожалуйста, объясните, что происходит. Если вы получили сообщение об ошибке, опубликуйте его. Если вы не получите желаемый результат, опубликуйте ожидаемый и фактический результат. –
Ваш код в этом вопросе не соответствует коду в файле, на который вы ссылаетесь. – juharr
@ DanielHilgarth Извините, не был достаточно явным. Код компилируется и запускается, но группировка не работает должным образом. На самом деле, он вообще не работает, и я возвращаю все строки – amhed