为什么这是一个无效的 LINQ 转换?
Why is this an invalid LINQ cast?
我将原始数据放入通用列表中。然后,我将根据该原始数据计算出的数据放入另一个通用列表中,这个:
private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsList;
数据(原始数据和计算数据)需要按总购买量排序显示,因此我希望数据以这种方式排序。由于订购了一个通用列表 returns 另一个通用列表,我首先尝试将排序后的数据重新分配到原始通用列表中:
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);
...但结果却出奇地相似。
我需要做什么来对通用列表进行排序?
您缺少 ToList() 调用。
LINQ 方法 return IEnumerable<T>
,而不是 List<T>
,因此您不能假设接口的实现可转换为 List<T>
.
您可以在 LINQ 查询上调用 ToList()
以获得包含结果的列表。
OrderByDescending
returns 一个 OrderedEnumerable。您的类型是 List
。只需在 OrderByDescending
之后调用 ToList()
即可返回您的类型。
OrderByDescending
方法是 LINQ 方法。通常,LINQ 适用于 IEnumerable
s,而不适用于 List
s。您需要使用 ToList()
方法从 IEnumerable
创建一个列表:
itemTotalsAcrossMonthsList.OrderByDescending(x => x.TotalPurchases13).ToList();
我将原始数据放入通用列表中。然后,我将根据该原始数据计算出的数据放入另一个通用列表中,这个:
private List<ItemTotalsAcrossMonths> itemTotalsAcrossMonthsList;
数据(原始数据和计算数据)需要按总购买量排序显示,因此我希望数据以这种方式排序。由于订购了一个通用列表 returns 另一个通用列表,我首先尝试将排序后的数据重新分配到原始通用列表中:
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);
...但结果却出奇地相似。
我需要做什么来对通用列表进行排序?
您缺少 ToList() 调用。
LINQ 方法 return IEnumerable<T>
,而不是 List<T>
,因此您不能假设接口的实现可转换为 List<T>
.
您可以在 LINQ 查询上调用 ToList()
以获得包含结果的列表。
OrderByDescending
returns 一个 OrderedEnumerable。您的类型是 List
。只需在 OrderByDescending
之后调用 ToList()
即可返回您的类型。
OrderByDescending
方法是 LINQ 方法。通常,LINQ 适用于 IEnumerable
s,而不适用于 List
s。您需要使用 ToList()
方法从 IEnumerable
创建一个列表:
itemTotalsAcrossMonthsList.OrderByDescending(x => x.TotalPurchases13).ToList();