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