我的代码中的.NET 3.5相当于WriteAllLines是什么?

时间:2013-11-01 14:51:59

标签: c# .net io .net-3.5

var output = query.Select(x => x.Plant + "\t" + x.Animal + "\t" + blah blah blah);
string FilePath = @"C:\output.txt";
File.WriteAllLines(FilePath, output);

将目标框架从4.0切换到3.5时出现的错误是:

  

错误14'System.IO.File.WriteAllLines(string,string [])'的最佳重载方法匹配有一些无效的参数

切换到3.5 Framework的最简单方法是什么,而不必更改太多代码并保持其功能?

2 个答案:

答案 0 :(得分:6)

File.WriteAllLines的{​​{3}}接受string[]。在.NET 4.0 .NET 3.5 overloadIEnumerable<string>,这就是您的原始代码有效的原因。改为使用数组,你应该没问题:

File.WriteAllLines(FilePath, output.ToArray());

答案 1 :(得分:1)

如果您正在编写大量行,因此不想使用.ToArray(),请使用此方法:

public static void MyWriteAllLines(string filename, IEnumerable<string> lines)
{
    using (var writer = new StreamWriter(filename))
    {
        foreach (var line in lines)
            writer.WriteLine(line);
    }
}