我正在尝试按国家/地区名称对字符串列表进行排序,该国家/地区名称在每个字符串元素前面都包含四个数字。但是,实际上我是按每个字符串前面的数字排序的,而不是按国家/地区名称排序的。谁能帮我在排序时如何忽略字符串中的数字。谢谢。
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()
不起作用是因为它使用默认的字符串比较-将整个字符串用于排序。您只想按空格后面的字符串部分进行排序。为此:
您可以.OrderBy
在字符串的第二部分使用Linq的方法:
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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句