C#排序字符串数组

时间:2017-05-17 12:04:27

标签: c# arrays string

我有一个字符串数组,格式为"ColX=Name=Value",其中X是数字,X> = 4.

我想按照X的升序对数组进行排序,我尝试使用
int colNbr = int.parse(string.Split('=')[0].Substring(3))
检索X的值,但后来我不知道如何订购字符串:/

任何更容易推荐的建议:)

3 个答案:

答案 0 :(得分:1)

你几乎有逻辑,只想尝试使用OrderBy。以下代码将帮助您完成该操作?

List<string> inputList = SomeMethod(); // will populate the list
inputList = inputList.OrderBy(x=> int.parse(x.Split('=')[0].Substring(3))).ToList();

答案 1 :(得分:1)

尝试使用(上下文中的匿名类),而不是原始的string

string[] source = ...

var data = source
  .Select(line => line.Split('='))
  .Select(items => new {           // Let's have classes
      Col = int.Parse(items[0].Substring(3)),
      Name = items[1],
      Value = items[2], })
  .OrderBy(item => item.Col);     // ... which are easy to handle (e.g. sort) 

请注意,如果您决定在给定Name内按Col排序,您只需要添加.ThenBy(item => item.Name):类很容易维护。< / p>

如果您希望获得string[]

string[] sorted = data
  .Select(item => $"Col{item.Col},{item.Name},{item.Value}")
  .ToArray(); 

答案 2 :(得分:0)

你可以使用OrderBy扩展方法。

 string[] sortedArrayString = arrayOfString
   .OrderBy(str => int.parse(str.Split('=')[0].Substring(3)))
   .ToArray();