c# - 如何将 SQL 'LIKE' 与 LINQ to Entities 一起使用?

标签 c# sql linq-to-entities

<分区>

我有一个文本框,允许用户指定搜索字符串,包括通配符,例如:

Joh*
*Johnson
*mit*
*ack*on

在使用 LINQ to Entities 之前,我有一个存储过程,它将该字符串作为参数并执行:

SELECT * FROM Table WHERE Name LIKE @searchTerm

然后我会在传入之前执行 String.Replace('*', '%')。

现在我正尝试使用 LINQ to Entities 来完成同样的事情。我知道有 StartsWith、EndsWith 和 Contains 支持,但它不会以我需要的方式支持它。

我阅读了“SqlMethods.Like”并尝试了这个:

var people = from t in entities.People
             where SqlMethods.Like(t.Name, searchTerm)
             select new { t.Name };

但是我得到以下异常:

LINQ to Entities does not recognize the method 'Boolean Like(System.String, 
System.String)' method, and this method cannot be translated into a store 
expression.

我如何使用 LINQ to Entities 获得相同的功能?

最佳答案

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/6529a35b-6629-44fb-8ea4-3a44d232d6b9/

var people = entities.People.Where("it.Name LIKE @searchTerm", new ObjectParameter("searchTerm", searchTerm));

关于c# - 如何将 SQL 'LIKE' 与 LINQ to Entities 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3095781/

相关文章:

c# - 如何在 switch 语句中使用 c# 元组值类型

c# - 任何特定于 C# 的编码安全问题?

sql - 选择各自父记录中的子记录总数

c#-4.0 - 如何在 ToTraceString() 不起作用的情况下获得由 Entity Framework 生成的真实 T-SQL

c# - 如何使用 LINQ to Entities 更新现有对象的属性?

c# - Linq to Entities 中的动态 where 子句 (OR)

c# - 遍历复选框列表并将数据库中的值分配给选定的列表(如果数据库具有该值)

c# - 当我的应用程序不会迁移时,我应该关心文化吗?

mysql - 从表中删除

c# - 在 mvc 中显示 url slug 而不是 id