-2

我将原始数据放入一个通用列表中。然后,我将根据该原始数据计算的数据放入另一个通用列表中,这个列表:

private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsList;

数据(原始数据和计算数据)需要按总购买量排序显示,所以我希望数据以这种方式排序。由于订购一个通用列表会返回另一个通用列表,我首先尝试将排序后的数据重新分配到原始通用列表中:

itemTotalsAcrossMonthsList = (List<ItemTotalsAcrossMonths>)itemTotalsAcrossMonthsList.OrderByDescending(x => 
x.TotalPurchases13);

......但我所走的道路显然是用善意铺成的,因为这个密码炸弹在我脸上爆炸:

在此处输入图像描述

我尝试将 vals 放入相同类型的单独通用列表中:

private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsList;
private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsListSortedByTotalPurchasesDescending;
. . .
itemTotalsAcrossMonthsListSortedByTotalPurchasesDescending = (List<ItemTotalsAcrossMonths>)itemTotalsAcrossMonthsList.OrderByDescending(x => x.TotalPurchases13);

......但结果惊人地相似。

我需要做什么才能对通用列表进行排序?

4

3 回答 3

3

你错过了 ToList() 电话。

LINQ 方法返回IEnumerable<T>,而不是List<T>,因此您不能假设接口的实现可转换为List<T>.

您可以调用ToList()LINQ 查询以获取包含结果的列表。

于 2015-11-06T22:14:45.517 回答
1

OrderByDescending方法是一种 LINQ 方法。一般来说,LINQ 作用于IEnumerables,而不是Lists。您需要从IEnumerableusingToList()方法创建一个列表:

itemTotalsAcrossMonthsList.OrderByDescending(x => x.TotalPurchases13).ToList();
于 2015-11-06T22:16:01.603 回答
1

OrderByDescending返回一个 OrderedEnumerable。您的类型是List. 只需ToList()在您之后调用OrderByDescending即可恢复您的类型。

于 2015-11-06T22:14:46.220 回答