在LINQ to Entity中使用LIKE运算符

时间:2010-06-15 21:00:31

标签: entity-framework sql-like

目前在我们的项目中,我们正在使用Entity Framework和LINQ。我们想要创建一个搜索功能,客户端填充不同的过滤器,但他不会被迫。

要在LINQ中执行此“动态”查询,我们考虑使用Like运算符,搜索字段,或者“%”以获取用户未填写该字段的所有内容。

当我们发现它并不支持Like时,我们就开玩笑了。经过一些搜索,我们读了几个答案,其中使用了StartsWith,但它对我们来说没用。

唯一的解决方案是使用类似的东西:

ObjectQuery<Contact> contacts = db.Contacts;
if (pattern != "")
{
      contacts = contacts.Where(“it.Name LIKE @pattern”);
      contacts.Parameters.Add(new ObjectParameter(“pattern”, pattern);
}

但是,我们只想坚持使用linq。

快乐的编码!

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用包含?

contacts.Contains(pattern);

有关LINQ生成的简洁示例,请参阅此链接。

http://davidhayden.com/blog/dave/archive/2007/11/23/LINQToSQLLIKEOperatorGeneratingLIKESQLServer.aspx

答案 1 :(得分:2)

使用它:

using System.Data.Objects.SqlClient;

... .Where(it => SqlFunctions.PatIndex("pat%", it.Name) > 0)