C#,无法从'System.Collections.Generic.IEnumerable'转换为'string []'

时间:2013-08-10 23:55:58

标签: c# .net ienumerable

我有一些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

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

2 个答案:

答案 0 :(得分:2)

oldLines.Where(line =&gt;!line.Contains(wordToDelete));返回IEnumerable&lt;串GT;

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

会解决它,

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

答案 1 :(得分:2)

newLinesIEnumerable<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());