0

我有一些 C# 代码:

var oldLines = System.IO.File.ReadAllLines(path);
var newLines = oldLines.Where(line => !line.Contains(wordToDelete));
System.IO.File.WriteAllLines(path, newLines);

该代码适用于新的 Windows 应用程序。但是当我将该代码粘贴到我现有的应用程序中时,我会收到以下错误:

Error   2   Argument 2: cannot convert from
'System.Collections.Generic.IEnumerable<string>' to 'string[]'
Error   1   The best overloaded method match for
'System.IO.File.WriteAllLines(string, string[])' has some invalid
arguments

为什么这个错误会在新项目中抛出,而不是在我的旧项目中?

4

2 回答 2

2

oldLines.Where(line => !line.Contains(wordToDelete)); 返回一个 IEnumerable<字符串>

System.IO.File.WriteAllLines(path, newLines.ToArray());

会修复它,

这可能是由另一个框架版本目标引起的。

于 2013-08-10T23:58:19.697 回答
2

newLines不是IEnumerable<string>a string[],但您的 .NET 版本(我假设是 3.5)没有接受 a 的重载IEnumerable<String>,这是在 .NET 4 中引入的。

因此,您只需要创建一个string[]forFile.WriteAllLines或至少使用 .NET 4:

System.IO.File.WriteAllLines(path, newLines.ToArray());
于 2013-08-10T23:59:08.217 回答