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

Max*_* Li 2 c# linq

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

System.Data.DataTable dt = reader.GetSchemaTable();
Run Code Online (Sandbox Code Playgroud)

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

while (reader.Read())
{
    writer.WriteLine(string.Join(";",ListWithRowContent))
}
Run Code Online (Sandbox Code Playgroud)

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

Den*_*nis 6

假设该读取器位于任何记录上:

var values = new Object[reader.FieldCount];

reader.GetValues(values);

writer.WriteLine(string.Join(";", values.Select(v => v.ToString())));
Run Code Online (Sandbox Code Playgroud)

或更方便的方式(FW 4.0 或更高版本):

var values = new Object[reader.FieldCount];

reader.GetValues(values);

writer.WriteLine(string.Join(";", values));
Run Code Online (Sandbox Code Playgroud)