我有一个字符串数组,格式为"ColX=Name=Value"
,其中X是数字,X> = 4.
我想按照X的升序对数组进行排序,我尝试使用
int colNbr = int.parse(string.Split('=')[0].Substring(3))
检索X的值,但后来我不知道如何订购字符串:/
任何更容易推荐的建议:)
答案 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();