【发布时间】:2018-04-26 09:28:56
【问题描述】:
我正在尝试运行如下排序,但遇到了 Start 属性在 Lambda 表达式中属于 Long 类型的问题。当它们是 int 类型时,它可以正常工作,但我需要它来处理更大的值。我尝试将 a.Start - b.Start 转换为 int 但这似乎提供了不正确的排序结果。
我应该使用不同的方法进行排序还是应该更改数据类型?
ranges.Sort((a, b) => a.Start - b.Start);
private readonly List<Range> ranges = new List<Range>();
public class Range
{
public Range(long startEnd) : this(startEnd, startEnd)
{
}
public Range(long start, long end)
{
if (end >= start)
{
Start = start;
End = end;
}
else
{
Start = end;
End = start;
}
}
public long Start { get; private set; }
public long End { get; private set; }
public void Update(long newStart, long newEnd)
{
Start = newStart;
End = newEnd;
}
public static implicit operator Range(long i)
{
return new Range(i);
}
}
【问题讨论】: