排序日期时间范围

时间:2011-03-09 09:09:00

标签: c#

鉴于范围日期时间列表(开始和结束时间),我如何按持续时间(例如,最大到最小持续时间)对它们进行排序?

3 个答案:

答案 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类型。