更新:
必须将返回Linq列表分配给变量'columnData':
columnData = columnData.OrderBy(s => s).ToList();
我在使用OrderByDescending排序简单的字符串列表时遇到麻烦。如果我先使用.Sort()然后使用.Reverse(),那么它就可以正常工作,因为我已经读过.Sort()可以自然排序,但是在生产代码中使用.Reverse()降序的做法是不好的做法。所以我这样做是这样的:
if(sortOrder == 1)
{
columnData.OrderBy(s => s);
}
else
{
columnData.OrderByDescending(s => s);
}
但是在升序或降序后我得到的是:
但是,如果我使用Sort()和Reverse(),它将正确排序。
Linq排序有什么问题?
答案 0 :(得分:2)
OrderBy不会更改列表的值。它返回一个新的有序集合,所以您要做的是:
if(sortOrder == 1)
{
columnData = columnData.OrderBy(s => s).ToList();
}
else
{
columnData = columnData.OrderByDescending(s => s).ToList();
}
答案 1 :(得分:1)
if (sortOrder == 1)
{
columnData = columnData.OrderBy(s => s);//.ToList();
}
else
{
columnData = columnData.OrderByDescending(s => s);//.ToList();
}
答案 2 :(得分:1)
您不使用返回的值OrderBy()
或OrderByDescending()
。
如LINQ documentation中所述,这些方法返回一个System.Linq.IOrderedEnumerable<TSource>
。