两个可能的OrderBy

时间:2017-01-25 20:48:48

标签: c# linq

下面列出的两种订购方式有什么区别吗?一个比另一个好吗?

List<int> nums = new List<int>{ 5, 7, 6, 15, 1, 3 };
var sort1 = nums.OrderByDescending(i => i);
var sort2 = nums.OrderBy(i => -i);

1 个答案:

答案 0 :(得分:10)

如果列表包含int.MinValue,则可能会在极端情况下产生不同的结果。

尝试

List<int> nums = new List<int> { int.MinValue, 5, 7, 6, 15, 1, 3 };

sort115, 7, 6, 5, 3, 1, -2147483648,但是 sort2-2147483648, 15, 7, 6, 5, 3, 1

原因是溢出:

int a = int.MinValue;
if (a == -a)
    Console.WriteLine("a == -a");

打印a == -a