将文件名从目录复制到通用列表中

本文关键字:列表 复制 文件名 | 更新日期: 2023-09-27 18:08:58

我有一个奇怪的行为,不知道从这里去哪里。我正试图从目录中读取文件名,并将其添加到类型<string>的通用列表中。

string path = @"C:'mydir'";
foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName))
{
    GenericList1.Add(s);
}

我得到错误:

对象引用未设置为对象的实例。

当我调试时,我看到变量s将文件名显示为值。事实上,当我使用:

时,我可以看到这个值
foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName))
{
    System.Windows.Forms.MessageBox.Show(s);           
}

谁知道我可能在哪里出错了?

将文件名从目录复制到通用列表中

 foreach (string s in Directory.GetFiles(path, "*.bak").Select(p => Path.GetFileName(p)))
        {
            GenericList1.Add(s);
        }  

Select方法需要在每个对象上执行一个函数。最简单的方法是使用一个简单的lambda。

当你使用lambda时,你基本上是在创建一个匿名方法或函数。Select方法需要知道您希望对集合中的每个项执行什么函数或操作。在本例中,您希望获得GetFiles方法返回的集合中每个项目的文件名。如果你需要更多的解释,请告诉我。