我正在尝试使用 LINQ 查询数据库。我将 TableA 与 TableB 与 TableC 一起加入。
我有零到多个“关键字”(在设计时不知道有多少),我想在(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}%')
问题是——我如何在 LINQ 中“动态”构建这个 WHERE 子句?
注意#1 - 我不想(出于此问题范围之外的原因)想要在三个表中创建一个 VIEW
注意#2——因为我是以这种方式加入的(而且我还是 LINQ 的新手),所以我不知道如何使用 PredicateBuilder,因为我不确定要传递什么类型(T)?
注意#3——如果重要的话……我最终计划返回一个强类型的(自定义)对象列表,以显示在 GridView 中。
编辑 - 2012 年 8 月 17 日 - 美国东部时间下午 5:15
下面的评论是正确的。
“OP 正在寻找的代码是任何一个字段包含任何一个关键字的地方。”
谢谢大家!