2012-03-11 20 views

Trả lời

3

Để có được các file bắt đầu bằng bất kỳ giá trị số, không phụ thuộc vào số các chữ số, bạn có thể sử dụng một biểu thức chính quy:

var files = Directory.GetFiles(@"c:\mydir", "*.pdf") 
        .Where(file => Regex.IsMatch(Path.GetFileName(file), "^[0-9]+")); 
        //.ToArray() <-add if you want a string array instead of IEnumerable 
+0

Điều đó hoạt động tốt - thx! Vì vậy, bạn có bất kỳ ý tưởng làm thế nào tôi có thể kết hợp đó vào một biểu thức chấp nhận cả tra cứu alpha và số. IE tôi có một workin sau đây một 'var currentPage = Directory.GetFiles (filePath, startChar +" * .pdf ") Bỏ qua ((pageNum - 1) * pageSize) .Take (pageSize) .Select (path => new FileInfo (path)) ToArray(); '. Với bạn, nơi mệnh đề được thêm vào 'var currentPage = Directory.GetFiles (tệpPath, startChar +" * .pdf "). Ở đâu (tệp => Regex.IsMatch (Path.GetFileName (tệp),"^[0-9] + ")) .Skip ((pageNum - 1) * pageSize) .Take (pageSize) .Chọn (path => new FileInfo (đường dẫn)). ToArray(); '. – brother

3

Không có cách nào để xác định điều này trực tiếp trong mẫu tìm kiếm. Khả năng của nó khá hạn chế (chủ yếu hỗ trợ ký tự đại diện *). Cách tốt nhất để thực hiện điều này là để lọc trên *.pdf và sau đó sử dụng một truy vấn LINQ để lọc những cái mà bắt đầu bằng một chữ số

Directory 
    .GetFiles(@"c:\mydir", "*.pdf") 
    .Where(x => Char.IsDigit(Path.GetFileName(x)[0])); 
+0

gì nếu tôi đã phải kết hợp đó vào tôi khái niệm "thực", mà là 'var currentPage = Directory.GetFiles (filepath, startChar + "* .pdf") .Skip ((pageNum - 1) * pageSize) .Take (pageSize) .Select (path => new FileInfo (đường dẫn)). ToArray(); '? Logic đằng sau là tôi có một máy nhắn tin alpha (A, B, C .. vv và một liên kết 0-9 cũng) do đó tôi muốn có thể chọn startchar cụ thể (alpha hoặc số) được hiển thị trong danh sách . Các công trình trên chỉ tốt với các ký tự alpha. – brother

Các vấn đề liên quan