【发布时间】:2020-04-30 18:07:43
【问题描述】:
我正在使用 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 文件时,它会将它们堆叠在一起。我想找到一种方法来水平连接列表(因此它们彼此相邻显示)而不是垂直连接。
感谢您的帮助,如果需要更多信息,请告诉我!
【问题讨论】:
-
我不知道你是否关心效率,但似乎一个接一个地循环遍历CSV的行,而不是选择一个列,遍历所有行、选择另一列、遍历所有行等。
-
你的意思是说
append一个list2到list1然后将其作为单个记录写入csv文件 -
您可以使用Zip 合并列表,但是您将如何存储结果列表?您需要一个能够并排保存两个列表中的数据的类,即具有两倍于
CountAndFrequencyClass的属性。 -
@PrasadTelkikar,我尝试使用 list1.AddRange(list2);已经附加了列表,但这会导致同样的问题。这两个列表是垂直显示的,而不是水平显示的。
-
@JohnWu 这似乎很有希望。我将与 ExpandoObject 结合使用。非常感谢!
标签: c# list csv concatenation csvhelper