0

我在列表中得到不同的时区时间。我想通过减号->加号(升序)来订购它们。例如,我给了一些国家时间。

+5:45 -8:00 0:00 -5:00 -7.30 +5:30

我希望此列表按此顺序排序。

-8:00 -7:00 -5:00 0:00 +5:30 +5:45

如何使用 LINQ OrderBy 做到这一点?

要点是,它应该首先按符号排序,而不是按数字排序。

谢谢,斯里拉姆

4

2 回答 2

3

如果列表中的“时区时间”存储为字符串,您可以使用 OrderBy 对列表进行排序,如下所示(已编辑):

OrderBy(x => double.Parse(x.Replace(':', '.'), CultureInfo.InvariantCulture))

请注意,double.Parse("+1.234") 仍然有效,也就是说,您不必删除前面带有 '+' 符号的每个字符串前面的 '+' 符号。

于 2013-06-28T08:34:16.057 回答
0

你可以使用一个TimeSpan类型:

.OrderBy(x => TimeSpan.Parse(x.TrimStart('+')))

请注意,虽然Parse允许负值,但+必须修剪任何前导。

于 2013-07-02T16:52:46.990 回答