C# 收集和序列化大型集合的最佳方法

C# 收集和序列化大型集合的最佳方法,c#,collections,large-data,C#,Collections,Large Data,所以我收集了一些物品;比如说需要序列化为CSV文件的Person对象 详细说明: 我从数据库中批量获取40k-50k行的数据,这些数据被添加到Person集合中 这总共有超过一百万条记录 我需要将其序列化为csv文件 C语言# 你能提出一个有效的方法来实现这一点吗 编辑:我试过什么了。 我正在使用Dapper获取这些批次的50k记录 var p = new DynamicParameters(); p.Add("@RequestId", new Guid("1B1

所以我收集了一些物品;比如说需要序列化为CSV文件的Person对象

详细说明: 我从数据库中批量获取40k-50k行的数据,这些数据被添加到Person集合中 这总共有超过一百万条记录 我需要将其序列化为csv文件

C语言#

你能提出一个有效的方法来实现这一点吗

编辑:我试过什么了。 我正在使用Dapper获取这些批次的50k记录

var p = new DynamicParameters();
                p.Add("@RequestId", new Guid("1B139CAB-1D53-467D-A013-03A5DB410937"));

                IEnumerable<Person> resultSet = _dbConn.Query<Person>(sql: "FetchPersons", param: p, commandType: CommandType.StoredProcedure);

上述方法是否合适

在不了解实际实现的更多细节的情况下,很难给出一个好的答案,但我可能会这样做:

SqlCommand cmd = ...;

using (SqlDataReader reader = cmd.ExecuteReader())
using (StreamWriter writer = new StreamWriter(outputPath))
{
    while (reader.Read())
    {
        writer.Write("\"");
        for (int v = 0; v < reader.FieldCount; v++)
        {
            if (v > 0)
                writer.Write("\",\"");

            writer.Write(reader[v]);
        }
        writer.Write("\"");

        writer.WriteLine();
    }
}
SqlCommand cmd=。。。;
使用(SqlDataReader=cmd.ExecuteReader())
使用(StreamWriter writer=newstreamwriter(outputPath))
{
while(reader.Read())
{
writer.Write(“\”);
对于(int v=0;v0)
writer.Write(“\”,\”);
作者、作者(读者[v]);
}
writer.Write(“\”);
writer.WriteLine();
}
}

如果需要,您也可以从阅读器中获取标题。您可能还想添加一些转义。

您已经尝试了什么?只需打开一个SqlReader,逐个读取记录并立即将其写入文件。或者尝试使用
bcp
工具:
SqlCommand cmd = ...;

using (SqlDataReader reader = cmd.ExecuteReader())
using (StreamWriter writer = new StreamWriter(outputPath))
{
    while (reader.Read())
    {
        writer.Write("\"");
        for (int v = 0; v < reader.FieldCount; v++)
        {
            if (v > 0)
                writer.Write("\",\"");

            writer.Write(reader[v]);
        }
        writer.Write("\"");

        writer.WriteLine();
    }
}