【发布时间】:2010-10-10 12:26:00
【问题描述】:
我有一个课程表,我需要根据在搜索框中输入的关键字进行搜索。 这是一个示例查询:
SELECT * FROM Courses WHERE
Title LIKE '%word%' OR Title LIKE '%excel%' OR
Contents LIKE '%word%' OR Contents LIKE '%excel%'
如何在 LINQ 中转换它,其中 LINQ 会根据每个关键字动态生成 WHERE 语句。
我尝试使用 PredicateBuilder,只要字段是 VARCHAR,它就可以正常工作。对于“TEXT”字段,不会生成引号,从而导致编译器给出错误消息。这是 PredicateBuilder 生成的 SQL
SELECT [t0].[CoursesID], [t0].[Title], [t0].[Contents], [t0].[Active],
FROM [dbo].[Courses] AS [t0]
WHERE ([t0].[Title] LIKE '%word%') OR ([t0].[Contents] LIKE %word%) OR
([t0].Title] LIKE '%excel%') OR ([t0].[Contents] LIKE %excel%)
请注意,数据库中的文本字段“内容”字段没有单引号。
是否有任何简单的方法来构建 WHERE 语句并将其附加到查询中?有谁知道我如何在没有 PredicateBuilder 的情况下做到这一点?
提前致谢。
【问题讨论】:
标签: linq where-clause