PDA

View Full Version : دریافت لیست فایل ها به صورت مرتب شده بر اساس عدد



armin8651
پنج شنبه 19 اردیبهشت 1392, 11:01 صبح
با کد زیر فایل های موجود در یک آدرس رو میخونم:

For Each strFiles In System.IO.Directory.GetFiles("F:\W")
ListBox1.Items.Add(strFiles)
Next

نتیجه هم به صورت زیر میشه:

http://upcity.ir/images2/35900888183482316004.png

اما همون طور که میدونید فایل ها در محیط ویندوز به این صورت نشون داده میشه (مرتب شده بر اساس عدد):

http://upcity.ir/images2/19700345771058525076.png

حالا من میخوام فایل ها رو مرتب شده بر اساس عدد بخونم، یعنی بعد از فایل 1.txt فایل 2.txt رو بخونه نه فایل 10.txt !
با کد زیر هم نتونستم کاری بکنم، نحوه استفاده از order by رو به درستی بلد نیستم:

For Each strFiles In System.IO.Directory.GetFiles("F:\W").OrderBy(Function(f) f)
ListBox1.Items.Add(strFiles)
Next

اگه راهی داره لطفا کمک کنید، ممنون

eshaghrahimy
پنج شنبه 19 اردیبهشت 1392, 17:13 عصر
میتونی بعد از این کار خود لیست را مرتب کنی

tooraj_azizi_1035
پنج شنبه 19 اردیبهشت 1392, 17:23 عصر
ببخشید به زبان C# خودتون تبدیل کنید:
class OrdinalStringComparer : IComparer<string>
{
int a, b;

public int Compare(string x, string y)
{

int.TryParse(x.Substring(0, x.IndexOf('.')), out a);
int.TryParse(y.Substring(0, y.IndexOf('.')), out b);



return a - b;
}
}


DirectoryInfo di = new DirectoryInfo(@"E:\");

foreach (FileInfo item in di.GetFiles("*.txt").OrderBy(f => f.Name, new OrdinalStringComparer()))
{
Console.WriteLine(item.Name);
}