C# LINQ Like子句-不带通配符运算符

C# LINQ Like子句-不带通配符运算符,c#,linq,linq-to-sql,entity-framework-4,linq-to-entities,C#,Linq,Linq To Sql,Entity Framework 4,Linq To Entities,我想使用like运算符编写一个LINQ to SQL查询,但不使用通配符运算符 我知道: Contains将等效于此:类似于“%b%”的 StartsWith将与此等效:a类似于“b%”,EndsWith则相反 Equals可以做到这一点,但“此方法执行顺序(区分大小写和区域性)比较。” 我现在的做法是: var loc = (from l in data.Locations.OrderBy(l => l.LocationName) join s in data.Locatio

我想使用like运算符编写一个LINQ to SQL查询,但不使用通配符运算符

我知道:

Contains将等效于此:类似于“%b%”的 StartsWith将与此等效:a类似于“b%”,EndsWith则相反

Equals可以做到这一点,但“此方法执行顺序(区分大小写和区域性)比较。”

我现在的做法是:

var  loc  = (from l in data.Locations.OrderBy(l => l.LocationName)
    join s in data.LocationSecurities.Where(s=> s.UserName.ToLower().Equals(userName.ToLower())) on l.LocationID equals s.LocationId
    select new
    {
        LocationId = l.LocationID,
        Name = l.LocationName
    }
    ).Distinct().ToList();
但这只是一个解决办法,因为我想做的是简单地使用Like的等价项,但去掉通配符,这在SQL Server Profiler上非常清楚

请让我知道

先谢谢你

您可以使用:

SqlMethods.Like
比如:


当与Linq to SQL或Entity framework一起使用时,
Equals
执行“顺序(区分大小写和区域性)比较”不适用,因为该语句将被转换为SQL
数据库(或列排序规则,如果设置)将确定如何处理
“=”
(等于)

编译器无法识别SqlMethods.Like方法;即使这应该是Linq到SQL@戴夫Bish@t_plusplus-什么?添加对System.Data.Linq.SqlClient.SqlMethods的引用
.Where(s => SqlMethods.Like(s.UserName, userName))