我会用一个例子来解释我的问题:我想将列表(0,1,2,6,7)排序到列表(6,7,0,1,2),所以列表中的每个对象,就是说大于 4 应该按升序排序,从最小的开始,然后所有小于 4 的,按升序排序,从最小的开始。
制作这个比较器:
public class MyComparer : IComparer<int>
{
public int Divider { get; set; }
public MyComparer(int divider) { Divider = divider; }
public int Compare(int x, int y)
{
if (x < Divider && y > Divider) return 1;
if (x > Divider && y < Divider) return -1;
return x.CompareTo(y);
}
}
然后你可以运行这个代码:
List<int> list = new List<int> { 0, 1, 2, 6, 7 };
list = list.OrderBy(i => i, new MyComparer(4)).ToList();
请注意,您希望如何处理值4
本身的问题并不清楚,它应该是6,7
组中的第一个条目还是组中的最后一个条目0,1,2
。根据您期望发生的情况,if()
上面每一行的不等式比较之一应包含一个=
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句