无法按某些字符串关键字过滤 Directory.Getfiles



>我正在尝试列出一个扩展名为.TXT的文件,并且只在列表框中显示包含"EUROPE_"的文件

private void btnDisplay_Click(object sender, EventArgs e)
{            
listBox1.Items.Clear();
var files = Directory.EnumerateFiles("C:\temp\FOLDER", "*.*", 
SearchOption.AllDirectories)
.Where(s =>  s.Contains("*EUROPE*") || s.EndsWith(".TXT"));
}

单击按钮时不显示任何内容

你需要对代码进行一些调整,但这不是一个糟糕的开始。
首先,您可以使用内置的通配符来仅获取 txt 文件。然后,您可以使用Where来确定哪个文件包含"欧洲"。之后,您需要将每个文件添加到列表框中。否则你显然不会看到它们。

private void btnDisplay_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
var files = Directory.EnumerateFiles("C:\temp\FOLDER", "*.txt", SearchOption.AllDirectories)
.Where(s => s.ToUpper().Contains("EUROPE"));
foreach(string file in files){
listBox1.Items.Add(file);
}
}

编辑:
您确实可以使用通配符来检查它是否包含欧洲。在我看来,它也更干净,更具可读性,所以使用它(当然,除了这一行之外,您仍然需要其余的代码)。请参阅此答案,其中显示了这种确切的方法,只是没有周围的代码。

您不必使用 where 子句。 以下代码行应该有效:

var files = Directory.EnumerateFiles("C:\temp\FOLDER", "*EUROPE_*.txt", SearchOption.AllDirectories)

最新更新