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));
}
}