我将原始数据放入通用列表中。然后,我将从原始数据计算的数据放入另一个通用列表中,这一个:
private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsList;
数据(原始数据和计算数据)需要显示排序,按总购买量排序,因此我希望数据按此方式排序。由于订购通用列表会返回另一个通用列表,我首先尝试将已排序的数据重新分配到原始通用列表中:
itemTotalsAcrossMonthsList = (List<ItemTotalsAcrossMonths>)itemTotalsAcrossMonthsList.OrderByDescending(x =>
x.TotalPurchases13);
......但是我所走的道路显然是出于良好的意图,因为这个码头炸弹在我脸上爆炸:
我尝试将val放入相同类型的单独通用列表中:
private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsList;
private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsListSortedByTotalPurchasesDescending;
. . .
itemTotalsAcrossMonthsListSortedByTotalPurchasesDescending = (List<ItemTotalsAcrossMonths>)itemTotalsAcrossMonthsList.OrderByDescending(x => x.TotalPurchases13);
......但结果非常相似。
如何对通用列表进行排序?
答案 0 :(得分:3)
你缺少ToList()调用。
LINQ方法返回IEnumerable<T>
,而不是List<T>
,因此您不能假设接口的实现可以转换为List<T>
。
您可以在LINQ查询上调用ToList()
以获取包含结果的列表。
答案 1 :(得分:1)
OrderByDescending
返回OrderedEnumerable。您的类型是List
。只需在ToList()
之后致电OrderByDescending
即可恢复您的类型。
答案 2 :(得分:1)
OrderByDescending
方法是LINQ方法。通常,LINQ适用于IEnumerable
s,而非List
s。您需要使用IEnumerable
方法从ToList()
创建一个列表:
itemTotalsAcrossMonthsList.OrderByDescending(x => x.TotalPurchases13).ToList();