简体   繁体   English

具有多个过滤器的 DirectoryInfo.GetFiles

[英]DirectoryInfo.GetFiles with multiple filters

I am trying to get a list of FileInfo objects that satisfy multiple filters.我正在尝试获取满足多个过滤器的 FileInfo 对象列表。

Every suggestion I have seen uses array of file names/paths instead of FileInfo:我看到的每个建议都使用文件名/路径数组而不是 FileInfo:

var files = Directory.GetFiles(sLogPath, "*.*", SearchOption.TopDirectoryOnly)
            .Where(s => s.StartsWith("abc", StringComparison.CurrentCultureIgnoreCase) || s.StartsWith("def", StringComparison.CurrentCultureIgnoreCase));

What I am trying to get is:我想要得到的是:

DirectoryInfo di = new DirectoryInfo(sLogPath);
var files = di.GetFiles(<same filter as above>);

But it looks like I can only do something like:但看起来我只能做类似的事情:

var files = di.GetFiles("*_" + dateStr + ".log");
                

Based on your comment to me on your question, it looks like you want to filter on file names, but get the FileInfo s that correspond to these names.根据您对我的问题的评论,您似乎想要过滤文件名,但要获取与这些名称对应的FileInfo

You can do something like this你可以这样做

var di = new DirectoryInfo(sLogPath);

var files = di
    .GetFiles("*.*", SearchOption.TopDirectoryOnly)
    .Where(x => x.Name.StartsWith("abc", StringComparison.CurrentCultureIgnoreCase)
        || x.Name.StartsWith("def", StringComparison.CurrentCultureIgnoreCase))
    .ToList();

We're using the Name property in the filter and working with the FileInfo[] array returned by DirectoryInfo.GetFiles() .我们在过滤器中使用Name属性并使用DirectoryInfo.GetFiles()返回的FileInfo[]数组。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM