尝试将所有以.XML结尾的文件放在不包含关键字的目录中。因此路径可能类似于" C:\ mypath \ string1-filename.xml"并且它不应该在列表中,因为它包含关键字。
这就是我所拥有的:
var files = Directory.GetFiles( "C:\\mypath", "*.xml" )
.Where( f => !f.Contains( "string1" ) && !f.Contains( "string2" ) && !f.Contains( "string3" ) )
.ToList();
我想把它改成一点清洁;类似的东西:
var exclusionList = new List<string> { "string1", "string2", "string3" };
var files = Directory.GetFiles( "C:\\mypath", "*.xml" )
.Where( f => !f.Contains(exclusionList) )
.ToList();
谢谢!
答案 0 :(得分:2)
var exclusionList = new List<string> { "string1", "string2", "string3" };
var files = Directory.GetFiles("C:\\mypath", "*.xml")
.Where(f => !exclusionList.Any(s => f.Contains(s)))
.ToList();
答案 1 :(得分:1)
您没有阅读文件内容。请尝试以下代码段。
的更新强>
我误解了这个问题。我已经更新了答案
var exclusionList = new List<string> { "string1", "string2", "string3" };
var files = Directory.GetFiles( "C:\\mypath", "*.xml" )
.Where(f => !exclusionList.Any(s => f.Contains(s)))
.ToList();
答案 2 :(得分:1)
没有直接执行此操作的扩展方法。所以这个扩展方法可以帮助您:
public static class MyExtensions
{
public static bool ContainsAny(this string source, ICollection<string> words)
{
foreach (var word in words)
{
if (source.Contains(word)) return true;
}
return false;
}
}
像这样使用:
var exclusionList = new List<string> { "string1", "string2", "string3" };
var files = Directory.GetFiles( "C:\\mypath", "*.xml" )
.Where( f => !f.ContainsAny(exclusionList) )
.ToList();