所以我有一组对象;说需要序列化为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);
我将这些内容提取到集合中后,我会执行以下操作:
using (TextWriter writer = File.CreateText(@"outPutFile.csv"))
{
foreach (Person person in personColl)
{
writer.WriteLine(person.FirstName + "," + person.LastName + "," + person.Param1 + "," + person.Param2 + "," + person.Param3);
}
writer.Flush();
}
上述方法是否合适?
答案 0 :(得分:1)
如果不了解实际实现的更多细节,真的很难给出一个很好的答案,但我可能只是这样做:
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();
}
}
如果需要,您也可以从阅读器中抓取标题。您可能还想添加一些转义。