c# - 如何按字母顺序对字母数字列表进行排序

标签 c# asp.net arrays list sorting

我正在尝试按国家/地区名称对字符串列表进行排序,其中每个字符串元素前面包含四位数字。但是,我实际上是按每个字符串前面的数字排序的,而不是按国家/地区名称排序的。任何人都可以帮助我如何在排序时忽略字符串中的数字。谢谢。

List<string> lst = new List<string>();
lst.Add("0003 India");
lst.Add("0005 America");
lst.Add("0004 Japan");
lst.Add("0001 Sweden");
lst.Add("0002 Germany");

lst.Sort();

lstSearchResult.DataSource = lst;
lstSearchResult.DataBind();

我得到的输出:

 0001 Sweden
 0002 Germany
 0003 India
 0004 Japan
 0005 America

我其实想要输出

 0005 America
 0002 Germany
 0003 India
 0004 Japan
 0001 Sweden

最佳答案

lst.Sort() 不起作用的原因是因为它使用默认的字符串比较 - 它使用整个字符串进行排序。您要做的是仅按空格后的字符串部分排序。为此:

您可以在字符串的拆分第二部分上使用 Linq 的 .OrderBy 方法:

List<string> lst = new List<string>();

lst.Add("0003 India");
lst.Add("0005 America");
lst.Add("0004 Japan");
lst.Add("0001 Sweden");
lst.Add("0002 Germany");

lst = lst.OrderBy(item => item.Split(' ').ElementAtOrDefault(1)).ToList();

// Or if always by the string from position 5 onward then:
lst = lst.OrderBy(p => p.Substring(5)).ToList();

lstSearchResult.DataSource = lst;
lstSearchResult.DataBind();

关于c# - 如何按字母顺序对字母数字列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38992789/

相关文章:

asp.net - Web 服务器上的 system.web.routing 不工作

java - ArrayList 编译错误

c# - 将数据行数组转换为数据表的简单方法

c# - 无关代码更改计算结果

c# - WinRT : Show upper and lower AppBar independently

c# - 将 CancellationToken 与异步方法的任务相关联

asp.net - Visual Studio 中aspx 页面的设计 View 有用吗?

c# - JSON 自动完成,不显示结果

.net - Intelligencia UrlRewriter 与 RegEx 无法正常工作

python - 使用嵌套的 defaultdict 重建数组