フォルダーに次のような名前のファイルがあります。
"C:\\Users\\John\\Documents\\333\\12.html"
2.html が 10.html の前に来るように並べ替える方法は?
ファイルを並べ替えるときに、文字列を数値として解析します。
例:
string[] files = {
"2.html",
"10.html",
"1.html"
};
files =
files.OrderBy(s => Int32.Parse(s.Substring(0, s.IndexOf('.'))))
.ToArray();
Directory
.GetFiles()
.OrderBy(f => int.Parse(Path.GetFileNameWithoutExtension(f)) )
この投稿を見てください -
http://www.codeproject.com/Articles/11016/Numeric-String-Sort-in-C
string[] files = System.IO.Directory.GetFiles();
NumericComparer ns = new NumericComparer();
Array.Sort(files, ns);
// files will now sorted in the numeric order
// we can do the same for directories
string[] dirs = System.IO.Directory.GetDirectories();
ns = new NumericComparer(); // new object
Array.Sort(dirs, ns);
public class NumericComparer : IComparer
{
public NumericComparer()
{}
public int Compare(object x, object y)
{
if((x is string) && (y is string))
{
return StringLogicalComparer.Compare((string)x, (string)y);
}
return -1;
}
}//EOC