我想用LINQ查詢數據庫。我將TableA與TableC一起加入TableA。構建Where子句(不確定PredicateBuilder將爲我工作)
我有很多'關鍵字'(不知道有多少在設計時間),我希望在(LIKE'%%')內查找遍佈三個表的幾個字段。
假設三(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}%')
的問題是 - 如何 '動態' 建立這個WHERE LINQ中的子句?
注#1 - 我不(對這個問題的範圍之外的原因)要創建跨越三個表的視圖
注2 - 因爲我以這種方式加入(和我我仍然對LINQ不熟悉)我不明白我如何使用PredicateBuilder,因爲我不確定TYPE(T)傳遞給它。
注意#3 - 如果它很重要......我最終計劃返回一個強類型的(自定義)對象列表以顯示在GridView中。
編輯 - 2012年8月17日 - 低於5:15 PM EDT
的意見是正確的。
「OP正在查找的代碼是,其中任何一個字段都包含關鍵字中的任何一個。」
謝謝大家!
david.s - 我不認爲有人真的回答過這個問題。我只是刷新了頁面。我錯過了什麼?下面的'答案'不起作用。 Servy的評論是正確的......生成的SQL將包含「AND」而不是「OR」。 :-( – 2012-08-17 21:09:17
david.s - 要點! – 2012-08-18 01:32:59