を含む文字列のリストがあります
"aa1"
"aa2"
"aa3"
"bb1"
"bb2"
"bb3"
値は、「aa3」が下部またはその他の任意の順序である任意の形式にすることができます
次の形式で並べ替えまたは並べ替えたい
"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();