C#でエクスプローラーで表示されるファイルの並び順と同じにソートしてみる

| 2009年6月20日土曜日
必要があったのでメモ。

IComparerを使ってArray.Sort()でソートする。

使い方は、


string[] list = { "01.txt", "1.txt", "02.txt" }
Array.Sort(list, new ExplorerSortComparer());

こんな感じ
--- ExplorerSortComparer Class ---

public class ExplorerSortComparer : IComparer {
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
public static extern int StrCmpLogicalW(string str1, string str2);

public int Compare(object obj1, object obj2) {
return StrCmpLogicalW((string)obj1, (string)obj2));
}
}

0 コメント: