Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 水平连接列表#_C#_List_Csv_Concatenation_Csvhelper - Fatal编程技术网

C# 水平连接列表#

C# 水平连接列表#,c#,list,csv,concatenation,csvhelper,C#,List,Csv,Concatenation,Csvhelper,我正在使用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.G

我正在使用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);
    }
}
使用(var sr=newstreamreader(inPath))
{
使用(var sw=新StreamWriter(输出路径))
{
var读取器=新的CsvReader(sr);
var编写器=新的CSV编写器(sw);
IEnumerable records=reader.GetRecords().ToList();
List list1=新列表();
列表1=计数和频率(记录“ShipperName”,1);
List list2=新列表();
列表2=计数和频率(记录,“ShipperCity”,1);
list1=list1.Concat(list2.ToList();
编写者记录(列表2);
}
}
list1=list1.Concat(list2.ToList();确实会连接字符串,但在将字符串写入CSV文件时,会将它们堆叠在一起。我想找到一种方法来水平连接列表(因此它们彼此相邻显示),而不是垂直连接


谢谢您的帮助,如果需要更多信息,请告诉我

您可以使用循环将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;
}
foreach(变量i=0;i=list2.Count)中断;
var rec1=list1[i];
var rec2=list2[i];
rec1.NewColumn=rec2.ColumnToAdd;
}

您可以在循环浏览列表时将它们写入文件

使用(var sr=newstreamreader(inPath))
{
使用(var sw=新StreamWriter(输出路径))
{
var读取器=新的CsvReader(sr);
var编写器=新的CSV编写器(sw);
IEnumerable records=reader.GetRecords().ToList();
List list1=新列表();
列表1=计数和频率(记录“ShipperName”,1);
List list2=新列表();
列表2=计数和频率(记录,“ShipperCity”,1);
for(int i=0;i
我不知道您是否关心效率,但一行一行地循环浏览CSV似乎比选择一列、循环浏览所有行、选择另一列、循环浏览所有行更有效率,等等。您的意思是说
a
list2
附加到
list1
中,然后将其作为单个记录写入csv文件吗?您可以使用合并列表,但如何存储生成的列表?您需要一个能够并排保存两个列表中的数据的类,即属性的数量是
CountAndFrequencyClass
@prasadelkikikar的两倍,我已经尝试使用list1.AddRange(list2);添加列表,但这会导致相同的问题。这两个列表是垂直显示的,而不是水平显示的。@JohnWu这似乎很有希望。我将把它与扩展对象结合使用。非常感谢!