2012-03-11 20 views

Odpowiedz

3

Aby uzyskać pliki, które zaczynają się żadnego wartość liczbową, niezależnie od liczby cyfr, można użyć wyrażenia regularnego:

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

To działa świetnie - thx! Masz pojęcie, w jaki sposób mogę włączyć to do jednego wyrażenia, które akceptuje zarówno alfa, jak i numeryczne wyszukiwanie. IE Mam następujące pracy w jednym 'var currentPage = Directory.GetFiles (filePath, startChar +" * .pdf "). Pomiń ((pageNum - 1) * pageSize) .Take (pageSize). Wybierz (ścieżka => nowy FileInfo (ścieżka)). ToArray(); '. Z tobą, gdzie dodano klauzulę 'var currentPage = Directory.GetFiles (filePath, startChar +" * .pdf "). Gdzie (file => Regex.IsMatch (Path.GetFileName (plik),"^[0-9] + ")) .Skip ((pageNum - 1) * pageSize) .Take (pageSize). Wybierz (ścieżka => nowa FileInfo (ścieżka)). ToArray(); '. – brother

3

Nie ma możliwości określenia tego bezpośrednio w wzorcu wyszukiwania. Jego możliwości są dość ograniczone (głównie obsługuje to wieloznacznik *). Najlepszym sposobem osiągnięcia tego celu jest filtrowanie *.pdf a następnie użyć kwerendy LINQ do filtrowania do tych, które zaczynają się od cyfry

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

gdybym musiał włączać że do mojego "prawdziwego" wypowiedzi, która jest 'var currentPage = Directory.GetFiles (filePath, StartChar + "* .pdf") .Skip ((pageNum - 1) * pageSize) .Take (pageSize). Wybierz (ścieżka => nowa FileInfo (ścieżka)). ToArray(); '? Logika za to, że mam alfa pager (A, B, C ... itp. I link 0-9), dlatego chciałbym móc wybrać konkretny startchar (alfa lub numerycznie), który jest pokazany na liście . Powyższe działa dobrze tylko z alfa-znakami. – brother

Powiązane problemy