1

ここでstackoverflowのような検索エンジンを実行しようとしています。選択したタグのいずれかを含むすべての行を選択する必要があります。

テーブル

RowID    Question    Tags
  1        'who'     'C#'
  2       'what'     'SQL'
  3       'where'    'C#,PHP'
  4       'when'     'PHP,SQL'

string[] myTags=new string{"c#","PHP'};

次に、私のSQL選択ステートメントは次のようになります

Select * from table where Tags like myTags[]

私は次のような結果を得たいと思っています

RowID    Question    Tags
  1        'who'     'C#'
  3       'where'    'C#,PHP'
  4       'when'     'PHP,SQL'

もちろん、これが構文的に正しくないことはわかっているので、ここにいます。

4

2 に答える 2

2

リンクのバージョン:

myTable.Where(x=>myTags.Contains(x.Tag));

SQL バージョン:

Select * from table where Tag in {'c#','SQL','PHP'}

1 つのアイテムにタグが多すぎる可能性がある場合は、データベースの設計を少し変更する (リレーショナル テーブルを追加する) 必要があります。タグが多すぎる文字列を使用するのは適切な方法ではありません。

更新: 現在の DB サンプルでは、​​linq でこれを行うことができます:

myTable.Where(x=>myTags.Any(y=>x.Tags.Contains(y)));
于 2012-05-09T18:01:54.937 に答える
0

複数の SQL 呼び出しを行うことに反対ですか? そうでない場合は、 for ループを実行して、タグの配列内の各アイテムに対してクエリを実行できますか?

于 2012-05-09T18:01:34.330 に答える