2010-01-19 17 views
7

Tôi có một danh sách các thư mục trong thư mục mẹ. Các thư mục này sẽ được tạo ở định dạng như 00001, 00002, 00003 ... để thư mục có số đuôi lớn hơn là số gần đây. trong ví dụ trên, nó là 00003. Tôi muốn có được điều này theo chương trình.C#: cách đơn giản nhất để sắp xếp tên thư mục và chọn tên thư mục gần đây nhất là gì?

nhờ sự giúp đỡ nào ..

+0

đề nghị bạn đăng mã bạn đã viết ... –

+0

lặp qua chúng và theo dõi mức cao nhất nhưng có vẻ như đủ tốt, trừ khi có cách để sắp xếp chúng tự động, mặc dù tôi nghi ngờ rằng ' sẽ nhanh hơn. Oh bạn đang tìm kiếm đơn giản nhất .. – falstro

Trả lời

3

NET 2:

private void button1_Click(object sender, EventArgs e) { 
     DirectoryInfo di = new DirectoryInfo(@"C:\Windows"); 
     DirectoryInfo[] dirs = di.GetDirectories("*", 
      SearchOption.TopDirectoryOnly); 

     Array.Sort<DirectoryInfo>(dirs, 
      new Comparison<DirectoryInfo>(CompareDirs); 
    } 

    int CompareDirs(DirectoryInfo a, DirectoryInfo b) { 
     return a.CreationTime.CompareTo(b.CreationTime); 
    } 
8

Hãy thử điều này:

var first = Directory.GetDirectories(@"C:\") 
    .OrderByDescending(x => x).FirstOrDefault(); 

Rõ ràng thay C:\ với đường dẫn của thư mục cha.

+0

cảm ơn RichardOD. Đó là sai lầm của tôi. Đã xóa nhận xét trên của tôi .. – satya

+0

@ rainbow365- không phải lo lắng. Tôi chỉ không chắc vấn đề có thể là gì! – RichardOD

+0

Nên nói x => x.Name, nếu không bạn sẽ nhận được một sự cố về DirectoryInfo không thực hiện IComparable – Fadeway

3

Tại sao không làm một cái gì đó như thế này:

string[] directories = Directory.GetDirectories(@"C:\temp"); 
string lastDirectory = string.Empty; 

if (directories.Length > 0) 
{ 
    Array.Sort(directories); 
    lastDirectory = directories[directories.Length - 1]; 
} 
1

gì về:

var greaterDirectory = 
    Directory.GetDirectories(@"C:\") 
     .Select(path => Path.GetFileName(path)) // keeps only directory name 
     .Max(); 

hoặc

var simplest = Directory.GetDirectories(@"C:\").Max(); 
+0

Không phải là làm gấp đôi công việc - đặt hàng vào thứ tự tăng dần và sau đó đi bộ sưu tập một lần nữa để có được giá trị tối đa? – JBRWilkinson

+0

@JBRWilkinson, bạn đã đúng, đã sửa –

1

Chỉ cần ném đầu ra của GetDirectories hoặc GetFiles tại một chức năng sắp xếp bong bóng.

private void SortFiles(FileSystemInfo[] oFiles) 
    { 
     FileSystemInfo oFileInfo = null; 

     int i = 0; 
     while (i + 1 < oFiles.Length) 
     { 
      if (string.Compare(oFiles[i].Name, oFiles[i + 1].Name) > 0) 
      { 
       oFileInfo = oFiles[i]; 
       oFiles[i] = oFiles[i + 1]; 
       oFiles[i + 1] = oFileInfo; 
       if (i > 0) 
       { 
        i--; 
       } 
      } 
      else 
      { 
       i++; 
      } 
     } 
    } 
Các vấn đề liên quan