按日期和时间排序(以字符串格式)

时间:2011-02-09 10:55:14

标签: c# collections sql-order-by

可能我要问的很简单,但我似乎没有把这个问题拿出来。 我有一个包含Date字段和Time字段的元素列表。 Date字段是常规DateTime,Time字段是字符串。 时间格式为HH:mm,范围为24h。

通过List.OrderBy(e => e.Date)按日期排序我的列表很简单,但我似乎无法在以后按时间对它进行排序,以便记录的顺序符合日期和时间。

我试过了,但这可能是一个大错误!

    List = List.OrderBy(e => e.EstimatedDate).OrderBy(e => new TimeSpan(int.Parse(e.EstimatedTime.Substring(0,e.EstimatedTime.LastIndexOf(":"))),int.Parse(e.EstimatedTime.Substring(e.EstimatedTime.LastIndexOf(":")+1)),0).TotalMinutes);

我希望有人可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:12)

你想要OrderBy(...).ThenBy(...);而且 - 如果时间在HH:mm 你不需要解析它那么 - 你可以按字母顺序排序,即< / p>

List = List.OrderBy(e => e.EstimatedDate).ThenBy(e => e.EstimatedTime).ToList();

或通过LINQ:

List = (from e in List
        orderby e.EstimatedDate, e.EstimatedTime
        select e).ToList();

答案 1 :(得分:4)

为什么不尝试以下内容:

List.OrderBy(e => e.Date).ThenBy(e => DateTime.Parse(e.Time));
// May need to change DateTime.Parse(e.Time) with appropriate conversion code

答案 2 :(得分:2)

你知道ThenBy()吗?

List = List.OrderBy(DATE).ThenBy(Time)