从sqlDataReader获取行的内容作为列表

时间:2012-08-08 09:32:01

标签: c# linq

我有一个SqlDataReader阅读器,我事先并不知道数据结构,即列数未知。我想把表放在csv文件中。 我从

中检索列
System.Data.DataTable dt = reader.GetSchemaTable();

所以我把它们放在dt.Columns()之后。然后,我想做这样的事情:

while (reader.Read())
{
    writer.WriteLine(string.Join(";",ListWithRowContent))
}

但是,我很难将行的内容放入ListWithRowContent列表中,例如linq .Select,但无法查询“reader”对象。
问题:怎么做(请不要循环!)?

1 个答案:

答案 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));