如何用linq进行LIKE查询?

mwe*_*ber 32 c# linq-to-sql

如何在Linq中执行LIKE查询?

我有以下查询我想执行.

var results = from c in db.costumers
              where c.FullName LIKE "%"+FirstName+"%,"+LastName
              select c;
Run Code Online (Sandbox Code Playgroud)

Jul*_*rau 35

你可以使用SqlMethods.Like(matchExpression,pattern)

var results = from c in db.costumers
              where SqlMethods.Like(c.FullName, "%"+FirstName+"%,"+LastName)
              select c;
Run Code Online (Sandbox Code Playgroud)

在LINQ to SQL之外使用此方法将始终抛出NotSupportedException异常.

  • 对于 EF Core,它是`Microsoft.EntityFrameworkCore.EF.Functions.Like(c.FullName, $"%{fullName}%")`。 (4认同)

Kie*_*ron 34

尝试将string.Contains()与EndsWith结合使用.

var results = from c in db.Customers
              where c.FullName.Contains (FirstName) && c.FullName.EndsWith (LastName)
              select c;
Run Code Online (Sandbox Code Playgroud)

  • 与`like`查询相反,这不是不区分大小写的. (2认同)

Tho*_*eld 13

试试这样吧

var results = db.costumers.Where(X=>X.FullName.Contains(FirstName)&&(X=>X.FullName.EndsWith(LastName))
                          .Select(X=>X);
Run Code Online (Sandbox Code Playgroud)

  • 为什么不使用'&&'运算符,而不是使用双Where子句? (3认同)

Pra*_*sad 5

 where c.FullName.Contains("string")
Run Code Online (Sandbox Code Playgroud)


Ade*_*rad 5

2019在这里:

需要 EF6

using System.Data.Entity;
string searchStr ="bla bla bla";
var result = _dbContext.SomeTable.Where(x=> DbFunctions.Like(x.NameAr, string.Format("%{0}%", searchStr ))).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)