2012-02-17 1 views
4

Мне не повезло найти очевидные места для ответа на вопрос, почему использование File.WriteAllLines(); не работает при выводе на StringCollection:Как написать содержимое System.Collections.Specialized.StringCollection в файл?

static System.Collections.Specialized.StringCollection infectedLog = new System.Collections.Specialized.StringCollection(); 

Опуская код здесь, который населен infectedLog .......

File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog); 

Может кто-либо сказать мне, что я делаю неправильно, или точка меня в сторону объяснения, которое понравится?

+0

_How_ не работает? Какая ошибка? –

ответ

7

File.WriteAllLines ожидает IEnumerable<string> (или string[]), тогда как StringCollection реализует только IEnumerable (обратите внимание на отсутствие универсального типа). Попробуйте следующее:

using System.Linq; 
... 
File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog.Cast<string>()); 
+0

Отлично. Ты звезда. Спасибо! :) –

1

попробовать это

File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog.Cast<string>()); 
0

Проблема заключается в том, что StringCollection действительно холодная коллекция. Он не реализует IEnumerable < T>, и это не массив, поэтому для него нет перегрузки WriteAllLines.

Вы можете сделать это:

File.WriteAllLines(theFileName, infectedLog.Cast<string>()); 

Или вы могли бы перейти на более современный тип коллекции, как строка списка <>.

0
 using (StreamWriter w = File.AppendText(@"testfile.txt")) 
     { 
      foreach (var line in sc) 
      { 
       w.WriteLine(line); 
      } 
      w.Close(); 
     }