我有一个SqlDataReader阅读器,我事先并不知道数据结构,即列数未知。我想把表放在csv文件中。 我从
中检索列System.Data.DataTable dt = reader.GetSchemaTable();
所以我把它们放在dt.Columns()之后。然后,我想做这样的事情:
while (reader.Read())
{
writer.WriteLine(string.Join(";",ListWithRowContent))
}
但是,我很难将行的内容放入ListWithRowContent列表中,例如linq .Select,但无法查询“reader”对象。
问题:怎么做(请不要循环!)?
答案 0 :(得分:4)
假设读者位于任何记录上:
var values = new Object[reader.FieldCount];
reader.GetValues(values);
writer.WriteLine(string.Join(";", values.Select(v => v.ToString())));
或更方便的方式(FW 4.0或更高版本):
var values = new Object[reader.FieldCount];
reader.GetValues(values);
writer.WriteLine(string.Join(";", values));