月名の配列があります:
String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"July", "Aug", "Sep", "Oct","Nov", "Dec"};
この配列をソートしたい。さまざまなコードを試しましたが失敗しました。
split メソッドを使用せずにこの配列をソートするにはどうすればよいですか?
シンプルな
Array.Sort(month);
配列を名前でソートします。
別の種類の並べ替えが必要な場合IComparer
は、独自の並べ替えを使用できます。
たとえば、単純なもの
public class myComp : IComparer<string>
{
#region IComparer<string> Members
public int Compare(string x, string y)
{
return x.ToLower().CompareTo(y.ToLower());
}
#endregion
}
そして、する
Array.Sort(month, new myComp());
次のように並べ替えることができます。
var sortedList = months.OrderBy (s => s).ToArray();
s=>s
必要に応じて、一部を他のソート キーに置き換えることができます。たとえば、2 番目の文字で並べ替えたい場合は、次のように記述できます。
var sortedList = months.OrderBy (s => s[1]).ToArray();
参考までに、OrderBy
メソッドは C# 3.0 に付属する LINQ の一部です。したがって、ファイルに含める必要がusing System.Linq
あります。
このように試すことができます。
string[] month= new string[]
{
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"July", "Aug", "Sep", "Oct","Nov", "Dec"
};
Array.Sort(month, StringComparer.InvariantCulture);
Array.ForEach(month, x => Console.WriteLine(x));