2013-08-10 9 views
0

У меня есть C# код:C#, не может конвертировать из 'System.Collections.Generic.IEnumerable' на 'строку []

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

код работает в новом окна приложения. Но когда я вставить этот код в мое существующем приложение, я получаю эти ошибки:

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

Какая версия фреймворка имеет существующее приложение? – Stu

+0

3.5, я поменяю его на то, что вы рекомендуете? 4 в моем новом приложении, где он работает, я уверен, что это исправление ?! :) – Saintjah

+0

Это исправило это, большое вам спасибо! – Saintjah

ответ

2

newLines является IEnumerable<string> не string[], но ваша версия .NET (я предполагаю, 3.5) не имеет overload which accepts an IEnumerable<String>, который был введен в .NET 4.

Так что вам просто нужно создать string[] для File.WriteAllLines или использовать как минимум .NET 4:

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

Еще раз спасибо, я отвечу, когда это позволит мне. – Saintjah

2

старыйLines.Where (line =>! Line.Contains (wordToDelete)); возвращает IEnumerable < строка>

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

исправит его,

Это, вероятно, вызвано другой целевой рамки версии.

+0

+1 для ответа сначала (я думаю). – RenniePet

Смежные вопросы