Объединение списков по горизонтали C# - PullRequest
0 голосов
/ 14 января 2020

Я использую инструмент библиотеки 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);
    }
}

The list1 = list1.Concat (list2) .ToList (); действительно объединяет строки, но ставит их друг на друга, когда они записываются в файл CSV. Я хочу найти способ объединить списки по горизонтали (чтобы они отображались рядом друг с другом), а не по вертикали.

Спасибо за любую помощь и, пожалуйста, дайте мне знать, если нужна дополнительная информация!

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вы можете использовать al oop для добавления столбца 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 голосов
/ 14 января 2020

Вы можете записать их в файл, когда вы oop просматриваете списки.

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();
        }
    }
}
...