LINQ を使用してデータベースにクエリを実行しようとしています。TableA と TableB を TableC と結合しています。
3 つのテーブルにまたがるいくつかのフィールド (LIKE '%%') 内で検索したい 0 個から多数の 'キーワード' (設計時にいくつあるかはわかりません) があります。
検索ボックスに 3 つのキーワードが入力されたとします。
T-SQLでは、これがあります-
SELECT tbl0.FieldA, tbl0.FieldB, tbl1.FieldC, tbl1.FieldD, tbl2.FieldE, tbl2.FieldF
FROM tbl0
JOIN tbl1 ON tbl0.KeyField = tbl1.KeyField
JOIN tbl2 ON tbl1.KeyField = tbl2.KeyField
WHERE (tbl0.FieldA LIKE '%{keyword1}%' OR tbl1.FieldC LIKE '%{keyword1}%' OR tbl2.FieldE LIKE '%{keyword1}%' OR tbl0.FieldA LIKE '%{keyword2}%' OR tbl1.FieldC LIKE '%{keyword2}%' OR tbl2.FieldE LIKE '%{keyword2}%' OR tbl0.FieldA LIKE '%{keyword3}%' OR tbl1.FieldC LIKE '%{keyword3}%' OR tbl2.FieldE LIKE '%{keyword3}%')
質問は -- LINQ でこの WHERE 句を「動的に」作成するにはどうすればよいですか?
注#1-(この質問の範囲外の理由で)3つのテーブルにまたがるビューを作成したくありません
注 2 - 私はこの方法で参加しているため (そして、まだ LINQ に慣れていないため)、どの TYPE (T) を渡すべきかわからないため、PredicateBuilder を使用する方法がわかりません。
注 #3 -- 重要な場合 ...最終的には、GridView に表示される (カスタム) オブジェクトの厳密に型指定されたリストを返すことを計画しています。
編集 - 2012 年 8 月 17 日 - 午後 5 時 15 分 (EDT)
下のコメントは正しいです。
「OPが探しているコードは、フィールドのいずれかにキーワードのいずれかが含まれている場所です。」
みんな、ありがとう!