4

使用 LINQToCSV 库时,是否可以在 csv 文件末尾或 csv 文件末尾后一行写入数据。

我正在使用 LINQtoCSV 并传递 List<> 来写入数据。我的 List<> 就像

x    y    z

1    4    5

1    5    3

现在我想为每条记录做 y*z 并将总和写在 csv 文件的末尾。

Sum = 35

我已经搜索了一段时间,但没有找到任何解决方案。

4

2 回答 2

2

https://social.msdn.microsoft.com/Forums/vstudio/en-US/00c609c0-5048-4ef1-8c03-e7c6217d8a32/n-not-working-in-fileappendalltext?forum=csharpgeneral

File.AppendAllText(csvPath, ""); 

成功了。

编辑:

我遍历了所有 List 记录并收集了 y*z 的总和。

sum = 0;
for (int i= 0; i < myList.Count; i++)
    sum += (y * z);

File.AppendAllText(csvPath, String.Concat("Sum = ", sum.ToString()));

为了在 csv 文件结束后写入一行,可以使用 Environment.NewLine

File.AppendAllText(csvPath, Environment.NewLine);
File.AppendAllText(csvPath, String.Concat("Sum = ", sum.ToString()));
于 2015-07-23T13:17:11.603 回答
1

我不知道这是否是你所追求的,但我过去曾使用过这样的东西:

CsvContext csv = new CsvContext();
var models = csv.Read<CsvData>(@"c:\Icons\Windows7\Desktop\Book2.csv").ToList();
CsvData sum = new CsvData();
sum.z = models.Sum(m => m.y * m.z);
models.Add(sum);
csv.Write(models, @"c:\Icons\Windows7\Desktop\Book3.csv");

在这个例子中我的模型是:

public class CsvData
{
    [CsvColumn(FieldIndex = 0)]
    public int x { get; set; }
    [CsvColumn(FieldIndex = 1)]
    public int y { get; set; }
    [CsvColumn(FieldIndex = 2)]
    public int z { get; set; }
}
于 2015-07-23T08:59:53.973 回答