對於按日期按月份和年份對列表進行分組,然後按日期對子組進行排序的LINQ查詢,我遇到了一些問題。編譯器告訴我,它不能評估類型參數,我非常困惑與所有的IGrouping,IOrderedEnumerable,IEnumerable的東西,我不能評估他們都不...編譯器無法評估LINQ查詢中的類型參數
該問題發生在groupedList.OrderBy(...)
行。
public IOrderedEnumerable<IGrouping<String, Asset>> DateAssetList
{
get
{
return AssetManager.Instance.AllAssets.
GroupBy(asset => ConverterHelper.GetMonthNameByIndex(asset.EntryDate.Month) + " " + asset.EntryDate.Year).
Select(groupedList => groupedList.OrderBy(asset => asset.EntryDate, new DateComparer())).
OrderBy(group => group.Key, new DateComparer());
}
}
AllAssets
是Asset
類型的列表。
EntryDate
是DateTime
的類型。
第一個GroupBy
聲明基本上按月份和年份劃分所有資產(例如2015年3月)。現在我的任務是對2015年3月份的子組中的所有資產進行排序,但我無法使查詢工作。
有人能爲我解開這個謎嗎?
編輯:添加DateComparer類
public class DateComparer : IComparer<String>
{
public int Compare(string x, string y)
{
if (DateTime.Parse(x) > DateTime.Parse(y))
return -1;
if (DateTime.Parse(x) < DateTime.Parse(y))
return 1;
return 0;
}
}
什麼不起作用? – 2015-04-05 00:52:32
編譯器無法在'groupedList.OrderBy(...)'語句的'Select(..)'行中計算類型參數。他希望我明確指定它們,但我無法做到這一點。 – xmashallax 2015-04-05 00:55:28
你期待什麼回報(用你自己的話說,而不是技術描述)。現在,您正在返回一組組。 – 2015-04-05 01:07:45