-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>

LINQ クエリを呼び出しToList()て、結果のリストを取得できます。

于 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

OrderByDescendingOrderedEnumerable を返します。あなたのタイプはList. あなたのタイプに戻るには、ToList()あなたの後に呼び出すだけです。OrderByDescending

于 2015-11-06T22:14:46.220 に答える