I VB kan man använda My.Computer.FileSystem.GetFiles(string directory,SearchOption searchType,string[] pattern). Tyvärr verkar man inte kunna få motsvarigheten i C#. Ska leta lite till dock. Array.FindAll(Directory.GetFiles(path), delegate(string s) { return s.EndsWith(".jpg") || s.EndsWith(".gif") });Lista jpg och gif filer samtidigt
Idag använder jag nedan kod för att lista filer i en katalog.
<code>
Directory.GetFiles(path, "*.jpg")
</code>
Finns det något sätt som tillåter mig att lista *.jpg och *.gif i samma listning?Sv: Lista jpg och gif filer samtidigt
I C# så gissar jag att ditt problem är att det inte blir en snyggt sorterad lista med filer. De 2 sökningarna är nog inget problem eller? Om du vill ha en sortad lista med alla filerna så kan du göra följande:
<code>
List<string> list = new List<string>();
list.AddRange(System.IO.Directory.GetFiles("c:\\","*.gif"));
list.AddRange(System.IO.Directory.GetFiles("c:\\", "*.jpg"));
list.Sort(delegate(string str1, string str2) { return string.Compare(str1, str2, true); });
</code>
[EDIT]
Du kan använda My i C# också. Lägg till en referens till Microsoft.VisualBasic assemblyn och sedan kan man använda VB's fördelar. Vissta att detta fungerade för inbyggda funktioner typ IsDate och så, men det funkar tydligen för My också.
Din lösning är så här:
<code>
using Microsoft.VisualBasic.Devices;
using System.Collections.ObjectModel;
using Microsoft.VisualBasic.FileIO;
string[] ext = new string[2];
ext[0] = "*.jpg";
ext[1] = "*.gif";
Computer c = new Computer();
ReadOnlyCollection<string> files = c.FileSystem.GetFiles("c:\\", SearchOption.SearchTopLevelOnly, ext);
</code>Sv: Lista jpg och gif filer samtidigt
Om du har ett filsystem som inte skiljer på versaler och gemener får du lägga till StringComparison.CurentCultureIgnoreCase