【发布时间】:2010-03-22 15:58:09
【问题描述】:
我有一个从表中提取的 LINQ to ENTITY 查询,但我需要能够创建一个“模糊”类型的搜索。所以我需要添加一个 where 子句,如果他们在搜索框中添加条件(文本框,可以是空白 --- 在这种情况下它会拉出所有内容),则按姓氏搜索。
这是我目前所拥有的:
var query = from mem in context.Member
orderby mem.LastName, mem.FirstName
select new
{
FirstName = mem.FirstName,
LastName = mem.LastName,
};
这将从 Entity 对象中的 Member 表中提取所有内容。
那我还有一个逻辑补充:
sLastName = formCollection["FuzzyLastName"].ToString();
if (!String.IsNullOrEmpty(sLastName))
query = query.Where(ln => ln.LastName.Contains(sLastName));
问题是当按下搜索按钮时,没有返回任何内容(0 个结果)。我已经针对我希望在这里发生的 SQL Server 运行查询,它返回 6 个结果。
这是我期望的查询:
SELECT mem.LastName, mem.FirstName FROM Members mem WHERE mem.LastName LIKE '%xxx%'
(当xxx输入到文本框时)
有人觉得这有什么问题吗?
编辑:修复了 SELECT 查询。我的意思是让它读为 LIKE '%xxx%' (NOT = 'xxx")
【问题讨论】:
-
你想要的是 peraps '%xxx%'?
-
是的,百分号是通配符,Like 原因应该是:mem.LastName LIKE '%xxx%'。
-
我还将确保搜索值实际上被正确传递的值。调试它并使用断点检查搜索字符串。
-
在这里发布整个方法可能会对您有所帮助,这样我们就可以看到您还在做什么。
标签: asp.net-mvc entity-framework linq-to-entities