排序不适用于“2013”年

本文关键字:2013 不适用 适用于 排序 | 更新日期: 2023-09-27 17:50:42

我将不同的List合并成一个,如下所示:

List<Tweet> tweets = new List<Tweet>();
foreach (string TID in TypeIDList)
{
    List<Tweet> lt = new List<Tweet>();
    ......
    tweets = tweets.Concat(lt).OrderByDescending(x => x.TwitTime).ToList();
}
return tweets.OrderByDescending(x => x.TwitTime).ToList();

所以在结果中,除了"2013"中的日期

外,所有内容都按降序排序

1/1/2013 12:43:15 PM

所以这些日期出现在最后而不是最开始

我不知道为什么会这样

排序不适用于“2013”年

我猜TwitTimestring,在这种情况下,如果您想在没有解析的情况下搜索它,您需要"yyyy/MM/dd hh:mm:ss"这样的格式。简单地说,如果最重要的部分(年份)在右手边,字母排序就不起作用。

然而,一个更好的方法是:将其存储在DateTime -中,这样可以安全地排序。

当对string s排序时,它们通常按字典顺序进行比较,这意味着所有以数字1开头的字符串将在一起:

1
10
2
3
...

在排序日期或时间时,您可以使用ISO8601日期,例如2013-01-01 12:34:23,这恰好可以按字典顺序正确排序。许多平台和语言也支持你可以使用的正确的日期比较功能。