两次写入同一 csv 行?

Writing to same csv line twice?

我正在尝试创建将值写入 csv 文件的代码,执行一些其他不相关的代码,然后向该行添加一个额外的值

    static void Main(string[] args)
    {
        int newNumber = 110;
        var records = new List<MovieInfo>
        {
            new MovieInfo {Rating = newNumber, Price = 44},
        };

        var config = new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            HasHeaderRecord = false,
        };

        string filePath = @"C:\file\path\go\brrrr";
        
        using (var stream = File.Open(filePath, FileMode.Append))
        using (var writer = new StreamWriter(stream))
        using (var csv = new CsvWriter(writer, config))
        {
            csv.WriteRecords(records);
        }

        //--------------------------------------
        //other unrelated code things happen here
        //--------------------------------------

        double value = 4;
        string thirdValue = "," + value;
        File.AppendAllText(filePath, thirdValue);
    }
    public class MovieInfo
    {
        public int Rating { get; set; }
        public int Price { get; set; }
    }

这段代码的输出是这样的

Output code

是否可以调整代码,使输出变为 110,44,4?如果相关,则附加信息是相关行将始终是文件中的最后一行。感谢任何帮助

当您调用 csv.WriteRecords(records); 时,所有记录都写入输出文件并且每条记录由换行符分隔,即使最后一条记录也有一个附加新行。

您可以使用 WriteRecord 方法一次写入一条记录,而不是一次性写入每条记录。此方法不写换行符。
调用 NextRecord 方法时会添加一个新行。所以循环你的记录减去一个你可以控制最后一行换行符的输出:

void Main()
{
    int newNumber = 110;
    var records = new List<MovieInfo>
    {
        new MovieInfo {Rating = 200, Price = 30},
        new MovieInfo {Rating = newNumber, Price = 44},
    };

    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        HasHeaderRecord = false,
    };

    string filePath = @"E:\temp\movieinfo.csv";

    using (var stream = File.Open(filePath, FileMode.Append))
    using (var writer = new StreamWriter(stream))
    using (var csv = new CsvWriter(writer, config))
    {
        // Write all records minus one.
        for (int x = 0; x < records.Count - 1; x++)
        {
            csv.WriteRecord(records[x]);
            csv.NextRecord();
        }

        // Write the last record without the newline
        csv.WriteRecord(records[records.Count-1]);
    }

    //--------------------------------------
    //other unrelated code things happen here
    //--------------------------------------

    double value = 4;
    string thirdValue = "," + value;
    File.AppendAllText(filePath, thirdValue);

}