2009-08-20 17 views
2

多次元文字列配列(別の配列の列名)として表現されたテーブルを取得し、SQL SELECT文を使用して行のサブセットを取得したいとします。多次元配列でSQLを実行する最も速い方法

キャッチ:

  • 表は、ユーザ(別のテーブルごとに)によって入力された
  • SQLは、ユーザー

私がする必要があるのですが入力しました

  1. SQLで表を作成
  2. 表をSQ L
  3. 照会テーブル

または単純なソリューションですか?例えば。多次元配列をDataTableに変換し、そのオブジェクトに対してSQLを実行しますか?

+0

最も簡単な方法はLINQを使用することです – Chris

+0

LINQをユーザーが文字列として入力することはできますか? – Chad

答えて

3

私はこのためにDataTableを使用できると思います。これは通常、データベースから取得したデータを格納するために使用されますが、手動でデータを格納できます。 DataTable.Select()メソッドを使用すると、クエリのWHERE句のみを記述でき、一致する行が返されます。

+0

それは私が(Starsignleoのコメントと組み合わせて)傾いていた方向です。私はさまざまなコンポーネント(SELECT、WHERE、ORDER、GROUP)にクエリを解析することを考えていました。
さらに調査すると、ダイナミックLINQはより良い可能性があります。 – Chad

1

ユーザーが入力したクエリを表す独自の式ツリーを作成できます。これは、Linqがどのように動作するかを示しています。あなたが達成しようとしているものの例を挙げることができれば、例えばWeb用にC#でアプリケーションを書くために役立つかもしれません。

たとえば、ユーザーが新しい行を入力させる場合、ある種類のGUIでテーブルにデータグリッドでこれを行い、上記の結果を得るために列フィルタを有効にできますか?

ウェブアプリでは、各列の上に入力ボックスを配置して、ユーザーがその列をフィルタリングするためのデータを入力することができます。

+0

データはさまざまな形式(CSV、Tab/Returnなど)で提供されますが、2D配列に変換されます。 必要な機能の最小セットは、SELECT、WHERE、ORDER、およびGROUPです。しかし、私はすべてのSQLクエリ(JOINを含む)を完全にサポートしたいと考えています。 問題は、プログラムごとに1回のクエリを実行するたびにテーブルを追加すると、非効率的で、複雑で、遅いようです。 – Chad

+0

おそらくあなたがしたいことは少し複雑です。あなたは本当にグループ化する必要がありますか? Datagridを使用してこれらの機能のほとんどを利用できます。また、ここで使用するDevexpress Gridもグループ化をサポートしています。 – StarSignLeo