2012-03-11 19 views

cevap

3

ile başlayan olanlara filtrelemek için bir LINQ sorgusu kullanmaktır i `var CurrentPage = Directory.GetFiles (filePath, startChar + "* .pdf") benim "gerçek" ifadesi, içine dahil etmek zorunda ne olur

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

Bu harika çalışıyor - thx! Yani, bunu hem alfa hem de sayısal aramayı kabul eden tek bir ifadeye nasıl dahil edebileceğimi biliyor musunuz? IE aşağıdaki var olan bir tane var var currentPage = Directory.GetFiles (filePath, startChar + "* .pdf") Atla ((pageNum - 1) * pageSize) .Take (pageSize) .Select (yol => new FileInfo (. yolu)) ToArray(); '. Burada eklediğiniz deyim ile var currentPage = Directory.GetFiles (filePath, startChar + "* .pdf"). (Dosya => Regex.IsMatch (Yol.GetFileName (dosya), "^ [0-9] +") .Skip ((pageNum - 1) * pageSize) .Take (pageSize) .Select (yol => yeni FileInfo (yol)) ToArray(); '. – brother

3

Bunu doğrudan arama düzeninde belirtmenin bir yolu yoktur. Yetenekleri oldukça sınırlıdır (çoğunlukla * joker karakterini destekler). Bunu başarmanın en iyi yolu sayısına bakılmaksızın *.pdf filtre uygulamak ve daha sonra ile herhangi sayısal değeri başlatmak dosyalarını edinmek için bir rakam

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

: basamak, bir normal ifade kullanabilirsiniz .Skip ((pageNum - 1) * pageSize) .Take (pageSize) .Select (yol => yeni FileInfo (yol)) ToArray(); '? Arkasındaki mantık, bir alfa çağrı cihazı (A, B, C .. vb. Ve ayrıca bir 0-9 bağlantı) sahip olduğumdan dolayı, listede gösterilen özel startchar'ı (alfa veya sayısal) seçebilmek istiyorum. . Yukarıdaki sadece alfa karakterleri ile iyi çalışır. – brother

İlgili konular