2

Razor Webgrid のカスタム ソートを実装しようとしています。具体的には、webgrid 自体に表示されない列を並べ替えたいと考えています。

ListOfMatching がソートされない理由を理解しようとして、頭がおかしくなってしまいます。どんなアイデアでも大歓迎です。

ありがとうございました

        ResultsDisplayModel foo;        // MVVM class to be bound to the view
                                        // List of Matching is bound to a webgrid

//    public List<ResultsModel> ListOfMatching { get; set; }
//    TotalDebt is in a base class of ResultsModel called Expenses

        if (sort == "DebtBurden")
        {

            if (foo.bSortDirection)
            {
                foo.bSortDirection = false;
                foo.ListOfMatching.OrderByDescending(x => x.TotalDebt);
            }
            else
            {
                foo.bSortDirection = true;
                foo.ListOfMatching.OrderBy(x => x.TotalDebt);
            }
        }
4

2 に答える 2

6

LINQ の拡張メソッドは、既定では副作用がありません (つまり、元のコレクションをインプレースで変更しません)。結果のコレクションを新しい変数に割り当てるか、古い変数を上書きする必要があります。

foo.ListOfMatchingColleges = foo.ListOfMatchingColleges
                                .OrderBy(x => x.TotalDebt)
                                .ToList();
于 2012-07-14T14:31:14.643 に答える
4

OrderBy と OrderByDescending はリストを変更しませんが、並べ替えられた要素の新しいリストを返します。プロパティを再割り当てする必要があります。

foo.ListOfMatchingColleges = foo.ListOfMatching.OrderByDescending(x => x.TotalDebt);
于 2012-07-14T14:31:39.323 に答える