C# 如何在每个数据集后使用换行符将多个CSV文件合并为一个

C# 如何在每个数据集后使用换行符将多个CSV文件合并为一个,c#,csv,merge,csvhelper,C#,Csv,Merge,Csvhelper,我编写了一个创建字符串列表的方法。字符串的值是会计数据。 当我点击一个按钮时,将创建一个新的.csv文件。 看起来是这样的: 如您所见,在行的末尾没有换行符回车换行符。 我想将所有这些.csv文件合并为一个,每个数据集对应一行。 我用这个简单的cmd copy命令手动尝试过,但是它们都被追加到第一行,而不是添加到下一行: 我需要在代码中添加/更改什么以在每行末尾包含换行符 如何以最简单的方式在方法中包含cmd copy命令 private void BuchungssatzB

我编写了一个创建字符串列表的方法。字符串的值是会计数据。 当我点击一个按钮时,将创建一个新的.csv文件。 看起来是这样的:

如您所见,在行的末尾没有换行符回车换行符。 我想将所有这些.csv文件合并为一个,每个数据集对应一行。 我用这个简单的cmd copy命令手动尝试过,但是它们都被追加到第一行,而不是添加到下一行:

  • 我需要在代码中添加/更改什么以在每行末尾包含换行符
  • 如何以最简单的方式在方法中包含cmd copy命令

            private void BuchungssatzBilden(object obj)
            {
            //Lieferschein-Buchungswerte in Liste speichern
            List<string> bs = new List<string>();
            bs.Add(SelItem.Umsatz.ToString());
            bs.Add(SelItem.Gegenkonto);
            bs.Add(SelItem.Beleg);
            bs.Add(SelItem.Buchungsdatum);
            bs.Add(SelItem.Konto);
            bs.Add(SelItem.Kost1);
            bs.Add(SelItem.Kost2);
            bs.Add(SelItem.Text);
    
            using (var stream = new MemoryStream())
            using (var reader = new StreamReader(stream))
            using (var sr = new StreamWriter(@"C:\" + SelItem.Beleg + SelItem.Text + SelItem.Hv + ".csv", true, Encoding.UTF8))
            {
                using (var csv = new CsvWriter(sr, System.Globalization.CultureInfo.CurrentCulture))
                {
    
                    //csv.Configuration.Delimiter = ";";                    
                    //csv.Configuration.HasHeaderRecord = true;
    
    
                    foreach (var s in bs)
                    {
                        csv.WriteField(s);   
                    }
    
                    csv.Flush();                    
                    stream.Position = 0;
                    reader.ReadToEnd();                  
                }
            }
            MessageBox.Show("CSV erfolgreich erstellt!");
        }
    
    private void BuchungssatzBilden(对象对象对象)
    {
    //李斯特·斯佩切恩的布琼斯维特酒店
    列表bs=新列表();
    添加(SelItem.Umsatz.ToString());
    bs.Add(SelItem.Gegenkonto);
    bs.Add(SelItem.Beleg);
    bs.增补(选择布琼斯达姆项目);
    bs.增补(SelItem.Konto);
    bs.Add(选择项目1);
    bs.增补(选择项目2);
    添加(SelItem.Text);
    使用(var stream=new MemoryStream())
    使用(变量读取器=新的流读取器(流))
    使用(var sr=newstreamwriter(@“C:\”+SelItem.Beleg+SelItem.Text+SelItem.Hv+.csv),true,Encoding.UTF8))
    {
    使用(var csv=new CsvWriter(sr,System.Globalization.CultureInfo.CurrentCulture))
    {
    //csv.Configuration.Delimiter=“;”;
    //csv.Configuration.HasHeaderRecord=true;
    foreach(bs中的var s)
    {
    csv.WriteField(个);
    }
    csv.Flush();
    流位置=0;
    reader.ReadToEnd();
    }
    }
    MessageBox.Show(“CSV-erfolgreich-erstellt!”);
    }
    

  • sr.WriteLine()
    完成所有写入操作后。必须在
    流之前。位置=0无论如何,你应该用你的类类型创建一个列表,并生成csv,而不是逐行生成,我同意@Magnetron。您是否有理由不能使用
    SelItem
    列表并将其传递给
    CsvWriter
    <代码>列表记录后接
    csv.WriteRecords(记录)FWIW,大约比CsvHelper快四倍。