将字符串视为整数进行排序

本文关键字:排序 整数 字符串 | 更新日期: 2023-09-27 18:30:04

对不起,我连续问了太多问题。

我有一个字符串列表,如下所示:

"firstnumber lastnumber"

我想按第一个号码排序,然后按最后一个号码

例如,如果我有:

"2-43"
"1-11"
"1-9"

排序后应该是这样的:

"1-9"
"1-11"
"2-43"

我使用了这个LINQ查询:

numbers.OrderBy(s => s.Split('-')[0]).ThenBy(s => s.Split('-')[1]);

但是这个查询按照字符串逻辑而不是int逻辑对它们进行排序。

所以如果我有2和11,我希望2在11 之前出现

(由于以"1"开头,因此按字符串逻辑对2之前的11进行排序)

非常感谢您的帮助

将字符串视为整数进行排序

使用int.Parse(str)str转换为数字。

numbers.OrderBy(s => int.Parse(s.Split('-')[0])).ThenBy(s => int.Parse(s.Split('-')[1]));

考虑使用vcepa的StringLogicalComparer类。它使用了类似的排序,他已经找到了所有的问题。

C#中的数字字符串排序
http://www.codeproject.com/Articles/11016/Numeric-String-Sort-in-C