2

SqlDataReaderリーダーがありますが、データ構造が事前にわかりません。つまり、列の数が不明です。テーブルをcsvファイルに入れたいのですが。から列を取得します

System.Data.DataTable dt = reader.GetSchemaTable();

だから私はそれの後にdt.Columns()にそれらを持っています。次に、私はこのようなことをしたいと思います:

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

ただし、linq .Selectのような行のコンテンツをListWithRowContentリストに入れるのは難しいのですが、「リーダー」オブジェクトをクエリできません。
質問:それを行う方法(forループは使用しないでください!)?

4

1 に答える 1

6

そのリーダーが任意のレコードに配置されていると仮定します。

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));
于 2012-08-08T09:44:10.413 に答える