我有一个类,为什么我的OrderBy使用这个比较器永远运行?
public class NullsAreLast : IComparer<int?>
{
public int Compare (int? x, int? y)
{
if(y == null)
return -1;
else if(x == null)
return 1;
else
return (int)x - (int)y;
}
}
这是不言自明的是如何工作的。
每当我在arr
运行
arr.OrderBy(i => i, new NullsAreLast())
与至少两个null
值运行永远!任何想法为什么?
您的排序并不稳定 - 如果什么都为null?那应该返回0. –
什么是'arr'? –
@ DanielA.White仍然不应该“永远”运行。只要它在x或y中遇到空值,它应该立即返回。我猜''arr'是一些延迟的查询,在场景后面做了一些时髦的东西 –