我确实有一个字符串列表,其中包含
"aa1"
"aa2"
"aa3"
"bb1"
"bb2"
"bb3"
值可以是任何形式,其中“aa3”可以位于底部或任何其他 oder
我想以以下形式对其进行排序或重新排序
"aa1"
"bb1"
"aa2"
"bb2"
"aa3"
"bb3"
那我该怎么做
以下答案使用 Linq 按所需顺序返回一系列字符串:
List<string> l = new List<string>
{
"aa1",
"aa2",
"aa3",
"bb1",
"bb2",
"bb3"
};
var result = l.OrderBy(s => s[2])
.ThenBy(s => s.Substring(0, 2));
foreach (string str in result)
Console.WriteLine(str);
请注意,原始列表保持不变。
您也可以通过匿名对象提取这些字符串:
var result = l.Select(s => new { Name = s.Substring(0, 2),
Num = s[2].ToString() })
.OrderBy(o => o.Num)
.ThenBy(o => o.Name);
foreach (var a in result)
Console.WriteLine(a.Name + a.Num);
你可以只使用 LINQ:
var strings = new List<string> { "aa1", "aa2", "aa3", "bb1", "bb2", "bb3" };
var orderedStrings = strings
.OrderBy(s => s[2])
.ThenBy(s => s[1])
.ThenBy(s => s[0])
.ToList();