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