对包含浮点数的字符串列表进行排序

c#

我有一个包含字段编号的对象列表。该字段是一个包含浮点数的字符串:0.5、0.2、10.0、2.2、2.1、1.1、1.0、2.12、1.14。我希望这个列表根据这个数字排序(后代),所以我有这个输出:10.0、2.2、2.12、2.1、1.14、1.1、1.0、0.5、0.2。

我试图这样做:

List<MyObject> sortedList = myUnsortedList.OrderyDescending(x => x.Number).ToList();

另外,我尝试过像这样使用 PadLeft (因为该用户建议/sf/answers/447756641/):

int maxlen = myUnsortedList.Max(x => x.Number.Length);

List<MyObject> sortedList = myUnsortedList.OrderyDescending(x => x.Number.PadLeft(maxlen, '0'));

但在这两种情况下,我都得到了错误的结果,例如:2.12、10.0、2.2、2.1、1.14、1.1、1.0、0.5、0.2。

你知道如何解决这个问题吗?

回答

问题出现了string,如果您存储 a ,为什么首先会有a double。您应该尽快解析它们(或防止它们是您加载它们的字符串)。

但是,您可以随时尝试在之后解析它们:

List<MyObject> sortedList = myUnsortedList
    .OrderyDescending(x => double.Parse(x.Number))
    .ToList();

如果您不知道它们是否具有所有有效格式,您可以使用double.TryParse. 也许您需要将适当的传递CultureInfodouble.Parse(例如,如果您当前的文化使用逗号作为小数点分隔符)。


以上是对包含浮点数的字符串列表进行排序的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>