Почему это недопустимое приведение LINQ?
Я поместил необработанные данные в общий список. Затем я помещаю данные, рассчитанные на основе этих необработанных данных, в другой общий список:
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);
... но результаты были очень похожи.
Что мне нужно сделать, чтобы отсортировать общий список?
3 ответа
Вы пропускаете вызов ToList().
Методы LINQ возвращают IEnumerable<T>
не List<T>
, так что вы не можете предполагать, что реализация интерфейса List<T>
,
Ты можешь позвонить ToList()
на запрос LINQ, чтобы получить список с результатами.
OrderByDescending
возвращает OrderedEnumerable. Ваш тип List
, Просто позвони ToList()
после вашего OrderByDescending
чтобы вернуться к вашему типу.
OrderByDescending
Метод является методом LINQ. В общем, LINQ работает на IEnumerable
с не List
s. Вам нужно создать список из IEnumerable
с помощью ToList()
метод:
itemTotalsAcrossMonthsList.OrderByDescending(x => x.TotalPurchases13).ToList();