我有一个包含
的字符串列表"aa1"
"aa2"
"aa3"
"bb1"
"bb2"
"bb3"
值可以是任何形式,其中“aa3”可以位于底部或任何其他oder
我想以
的形式对其进行排序或重新排序"aa1"
"bb1"
"aa2"
"bb2"
"aa3"
"bb3"
所以我该怎么做呢
答案 0 :(得分:3)
以下答案使用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);
答案 1 :(得分:1)
你可以使用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();