订单列表<t>在数字基础上</t>

时间:2011-04-26 08:15:35

标签: c# generics sql-order-by icomparer icomparablet

我正在使用此代码来命令按数字基础降序的列表

ItemsList.OrderByDescending(x => x.Views, new IntComparer());

public class IntComparer : IComparer<long>
{
    IComparer<long> Members;

    public int Compare(long x, long y)
    {
        return Math.Sign(x - y);
    }
}

但它根本没有订购:S任何帮助PLZ

2 个答案:

答案 0 :(得分:5)

Enumerable.OrderByDescending是LINQ的一部分。

所以它不是修改列表,而是创建新列表。使用

ItemsList = ItemsList.OrderByDescending(x => x.Views, new IntComparer()).ToList();

或类似的东西。

答案 1 :(得分:0)

你应该读到这个:http://msdn.microsoft.com/fr-fr/library/bb534861.aspx#Y1185 似乎此方法不更新列表,因此您需要存储结果。

List aList = ItemsList.OrderByDescending(x => x.Views, new IntComparer());

public class IntComparer : IComparer<long>
{
    IComparer<int> Members;

    public int Compare(long x, long y)
    {
        return Math.Sign(x - y);
    }
}

ItemsList = aList;