You can create a extension method and pass the array of partial names which you want to find.
Call the extension method like this
DirectoryInfo dir = new DirectoryInfo(@"c:\demo"); FileInfo[] files = dir.GetFilesBypartialName("Anc_def_", "ABC_123", "12_qweqweqw_123").ToArray();
below is the extension method
public static class DirectoryFindFile { public static IEnumerable<FileInfo> GetFilesBypartialName(this DirectoryInfo dirInfo, params string[] partialFilenames) { if (partialFilenames == null) throw new ArgumentNullException("partialFilenames"); var lstpartialFilenames = new HashSet<string>(partialFilenames, StringComparer.OrdinalIgnoreCase); return dirInfo.EnumerateFiles() .Where(f => lstpartialFilenames.Contains(f.Name)); } public static IEnumerable<FileInfo> GetFilesBypartialFilenamesAllDir(this DirectoryInfo dirInfo, params string[] partialFilenames) { if (partialFilenames == null) throw new ArgumentNullException("partialFilenames"); var lstpartialFilenames = new HashSet<string>(partialFilenames, StringComparer.OrdinalIgnoreCase); return dirInfo.EnumerateFiles("*.*", SearchOption.AllDirectories) .Where(f => lstpartialFilenames.Contains(f.Name)); } }
string.Contains