我有一些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
为什么会在新项目中抛出此错误,而不是在我的旧项目中?
答案 0 :(得分:2)
oldLines.Where(line =&gt;!line.Contains(wordToDelete));返回IEnumerable&lt;串GT;
System.IO.File.WriteAllLines(path, newLines.ToArray());
会解决它,
这可能是由另一个框架版本目标引起的。
答案 1 :(得分:2)
newLines
是IEnumerable<string>
而不是string[]
,但您的.NET版本(我假设为3.5)没有overload which accepts an IEnumerable<String>
,这是在.NET 4中引入的。
所以你只需要为File.WriteAllLines
创建string[]
或至少使用.NET 4:
System.IO.File.WriteAllLines(path, newLines.ToArray());