11

次の例の列を含むSQLテーブルからデータを入力しているDataTableがあります

  • ID
  • タイプ
  • 価値

特定のタイプの行を DataTable に入力しています。結果の DataTable から行 10 ~ 20 を選択したい:

Connect conn = new Connect();
SqlDataAdapter da = new SqlDataAdapter(SQL, conn.Connection());

//Creates data
DataTable d = new DataTable();
da.Fill(d);

DataRow[] result = d.Select();

上記のコードでは、メインの SQL を省略しました。現在、DataRow 配列を選択していません。行番号を参照する方法が見つかりません。

たとえば、次のようなものを探していますSelect("rownum > X && rownum < Y")

ここで検索しましたが、他の多くのリソースは役に立ちませんでした。手がかりは本当に便利ですが、単純に不可能です。

4

2 に答える 2

17

メモリ内でフィルタリングするのではなく、データベースから必要なものだけを選択することを常にお勧めします(TOP節またはウィンドウ関数を使用して)。ROW_NUMBER

Linq-To-DataSetただし、Enumerable.Skip+を使用できますEnumerable.Take

var rows = d.AsEnumerable()
    .Skip(9).Take(11);  // select rows 10-20 as desired (so you want 11 rows)

DataTableフィルタリングされた結果から新しいものが必要な場合はを使用しCopyToDataTable、必要な場合は をDataRow[]使用しますrows.ToArray()

于 2013-02-05T21:54:30.617 に答える
5

「take」と「skip」コマンドを実行して、シンプルに保ちます。

 d.Select().Skip(10).Take(10);  // skips 10 rows, then selects ten after that.

これは、Linq using セット (System.Linq を使用) があることを前提としています。

于 2013-02-05T21:56:41.927 に答える