水平连接列表C#

问题描述 投票:0回答:2

我正在使用CsvHelper库工具来帮助将我创建的列表写入CSV文件。

using (var sr = new StreamReader(inPath))
{
    using (var sw = new StreamWriter(outPath))
    {
        var reader = new CsvReader(sr);
        var writer = new CsvWriter(sw);

        IEnumerable records = reader.GetRecords<DataRecord>().ToList();

        List<CountAndFrequencyClass> list1 = new List<CountAndFrequencyClass>();
        list1 = CountAndFrequency(records, "ShipperName", 1);

        List<CountAndFrequencyClass> list2 = new List<CountAndFrequencyClass>();
        list2 = CountAndFrequency(records, "ShipperCity", 1);

        list1 = list1.Concat(list2).ToList();

        writer.WriteRecords(list2);
    }
}

list1 = list1.Concat(list2).ToList();确实确实连接了字符串,但是当将它们写出到CSV文件时,它们将它们堆叠在一起。我想找到一种方法,以水平(而不是垂直显示)水平连接列表。

感谢您的帮助,如果需要其他信息,请告诉我!

c# list csv concatenation csvhelper
2个回答
1
投票

您可以使用循环将list2列添加到list1的记录中

foreach (var i=0 ; i< list1.Count; i++)
{
    if(i>=list2.Count ) break;
    var rec1 = list1[i];
    var rec2 = list2[i];
    rec1.NewColumn = rec2.ColumnToAdd;
}

0
投票

您可以在遍历列表时将它们写到文件中。

using (var sr = new StreamReader(inPath))
{
    using (var sw = new StreamWriter(outPath))
    {
        var reader = new CsvReader(sr);
        var writer = new CsvWriter(sw);

        IEnumerable records = reader.GetRecords<DataRecord>().ToList();

        List<CountAndFrequencyClass> list1 = new List<CountAndFrequencyClass>();
        list1 = CountAndFrequency(records, "ShipperName", 1);

        List<CountAndFrequencyClass> list2 = new List<CountAndFrequencyClass>();
        list2 = CountAndFrequency(records, "ShipperCity", 1);

        for (int i = 0; i < list1.Count; i++)
        {
            writer.WriteRecord(list1[i]);
            writer.WriteRecord(list2[i]);
            writer.NextRecord();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.