使用LINQ而不是foreach时,将拒绝访问文件

时间:2014-06-13 13:05:30

标签: c# linq

我得到此例外

  

{“调用目标抛出了异常。”}   {“拒绝访问路径'C:\ test \ test \ bin \ log'。”}

当我运行此代码时:

if(Directory.Exists(logPath))
{
    return Directory.GetFiles(logPath, "*.log")
                    .Select(file => File.ReadAllText(logPath))
                    .ToList();
}

运行此代码时出现 NO 异常:

if(Directory.Exists(logPath))
{
    var list = new List<string>();
    var filesPath = Directory.GetFiles(logPath, "*.log");
    foreach (var filePath in filesPath)
    {
        string text = File.ReadAllText(filePath);
        list.Add(text);
    }

    return list;
}

为什么我不能使用Linq获取文本文件内容?

1 个答案:

答案 0 :(得分:4)

您的两个代码应该相同。这也不会引发异常。

.Select(file => File.ReadAllText(file))

完整代码

if (Directory.Exists(logPath))
       {
           return Directory
               .GetFiles(logPath, "*.log")
               .Select(file => File.ReadAllText(file))
               .ToList();
       }

请注意:您的异常不是特定于LINQ的。