Sla*_*der 12 asp.net-mvc linq-to-entities entity-framework
我有一个LINQ to ENTITY查询从表中提取,但我需要能够创建一个"模糊"类型的搜索.所以我需要添加一个where子句,按照姓氏搜索,如果他们在搜索框中添加条件(文本框,可以为空白---在这种情况下,它会拉动所有内容).
这是我到目前为止:
var query = from mem in context.Member
orderby mem.LastName, mem.FirstName
select new
{
FirstName = mem.FirstName,
LastName = mem.LastName,
};
Run Code Online (Sandbox Code Playgroud)
这将把所有内容从Entity对象中的Member表中拉出来.
然后我对逻辑有了补充:
sLastName = formCollection["FuzzyLastName"].ToString();
if (!String.IsNullOrEmpty(sLastName))
query = query.Where(ln => ln.LastName.Contains(sLastName));
Run Code Online (Sandbox Code Playgroud)
问题是当按下搜索按钮时,不返回任何内容(0结果).我已经运行了我期望在这里发生的SQL Server查询,它返回6个结果.
这是我期望的查询:
SELECT mem.LastName, mem.FirstName FROM Members mem WHERE mem.LastName LIKE '%xxx%'
Run Code Online (Sandbox Code Playgroud)
(当xxx输入文本框时)
有人看到这个有什么不对吗?
编辑:修复了SELECT查询.我的意思是它读取LIKE'%xxx%'(NOT ='xxx")
Joh*_*ski 15
我想你想使用Contains()字符串参数的功能,如下所示:
var query = from mem in context.Member
where mem.LastName.Contains("xxx")
orderby mem.LastName, mem.FirstName
select new
{
FirstName = mem.FirstName,
LastName = mem.LastName,
};
Run Code Online (Sandbox Code Playgroud)
我认为你也可以使用StartsWith(),EndsWith()它们分别等同于SQL'xxx%'和'%xxx'.
| 归档时间: |
|
| 查看次数: |
21144 次 |
| 最近记录: |