鉴于范围日期时间列表(开始和结束时间),我如何按持续时间(例如,最大到最小持续时间)对它们进行排序?
答案 0 :(得分:1)
假设列表中的每个对象都是 DateTime 类型,那么您可以使用 Ticks 属性对它们进行排序。
http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx
如果它们是范围,您可以从结束时间的刻度中减去开始时间的刻度,并使用结果值进行排序。
例如:
DateTime Start = YourStartValue;
DateTime End = YourEndValue;
long Range = End.Ticks - Start.Ticks;
这会给你一些“蜱虫”,代表你范围内的时间长度,数字越小,持续时间越短。
对每个范围重复此操作,然后您可以对结果进行排序。
答案 1 :(得分:0)
假设A en B是DateTime,您可以像这样使用TimeSpan
long sort = (A - B).Ticks;
答案 2 :(得分:0)
您需要将持续时间保存在第三个属性中,然后对第三个属性应用sort。
如果要从数据库填充列表并将其保存在DataTable中。然后,您可以在基于表达式的列上的数据表中添加Expression based Column然后应用排序。
如果您有类的对象的通用列表。那么你的财产应该看起来像这样。
public long Duration {
get {
return (endDate - startDate).Ticks;
}
}
我猜你的开始和结束都属于DataTime类型。