0
編輯3:改進的問題措辭和實施例方法,其接收LINQ IGrouping作爲參數
我有一個使用分組下面LINQ查詢。分組和選擇操作很複雜,所以我將其中一個選擇抽象爲一個方法,該方法對如何呈現數據做出了一些選擇。
我的查詢在匿名組定義中正常工作,但只要我將它鍵入到類中以便將其作爲IGrouping對象傳遞給方法,就會停止對結果進行分組。
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
「不工作」不是錯誤描述。請解釋發生了什麼。如果您收到錯誤消息,請將其發佈。如果你沒有得到想要的結果,請發佈預期結果和實際結果。 – 2013-02-19 21:10:19
您在此問題中的代碼與您鏈接到的文件中的代碼不匹配。 – juharr 2013-02-19 21:17:23
@DanielHilgarth對不起,不夠明確。代碼編譯並運行,但分組無法按預期工作。事實上,它根本不起作用,我得到所有的行 – amhed 2013-02-19 21:19:35