2

一般的な SQLDataReader を受け取り、それを csv ファイルに変換する小さな C# 関数があります。ただし、渡される datareader から 1 列を無視する必要があります。

SQLDataReader から 1 列を削除するにはどうすればよいですか?

この列は、主に順序付けのためにクエリで必要ですが、同じページロードの別の領域で使用されますが、生成する csv ファイルに表示したくありません。

編集:私はやや誤解を招くと思います.削除したい列は他のケースで使用されています,これだけではありません.クエリから削除するだけで機能しますが、代わりにクエリを2回実行する必要があります.一度だけで、より大きなクエリです。

4

5 に答える 5

3

非表示にする整数の配列を渡します。整数は、オフにする列のインデックスに対応します。オーバーロードされたメソッドを作成して、呼び出して各列を出力するプログラムのコードを変更する必要がないようにすることができます。

(ここでは多くのことを想定していますが、過負荷が重要なビットです)

public void MakeMyCSV(string MyFileName, SQLDataReader DataToOutput) 
{
    MakeMyCSV(MyFileName, DataToOutput, null);
}

public void MakeMyCSV(string MyFileName, SQLDataReader DataToOutput, int[] ExcludedColumns) //if this is your current method signature...
{
    //iterate through each record
    //    iterate through each column
    //        if ExcludedColumns is not null then see if this column is in it
    //            if it is not in it, output it
}
于 2009-05-13T14:39:12.083 に答える
0

無視する列のリストを含むパラメーターを追加します。

、 などのパラメーターがある場合ignore_columnsがあります。パラメーターが指定されていて、列がリストにある場合、それは無視されます。パラメータが提供され、列がリストにない場合、その列は無視されます。include_columnsignore_columnsinclude_columns

于 2009-05-13T14:32:08.333 に答える
0

それはいけません!CSV を生成するコードを変更して、必要な列のみを処理し、他の列を無視する必要があります。

于 2009-05-13T14:32:11.877 に答える
0

SQL クエリの order by 句で使用される列を結果セットに含める必要はありません。selectステートメントから除外できますか?

于 2009-05-13T14:23:35.260 に答える
0

データリーダーから列を削除しません。データが必要ない場合は、列を読み取らないでください。並べ替えに列データが必要な場合は、それを読み取ります。CSV ファイルを作成するときは、単純にデータを省略します。CSV ファイルの書き込みは、SqlDataReader での読み取りとは関係ありません。

于 2009-05-13T14:24:12.873 に答える