繁体   English   中英

LINQ Like子句-不带通配符

[英]LINQ Like Clause - Without Wildcard operator

我想使用Like运算符编写LINQ to SQL查询,但不使用WildCard运算符。

我知道以下几点:

包含将与此等价:类似'%b%'的StartsWith将与此等价:一个类似'b%'和EndsWith将相反。

等于可以做到,但是“此方法执行顺序(区分大小写和对文化不敏感)的比较。”

我现在的工作方式是这样的:

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

喜欢:

.Where(s => SqlMethods.Like(s.UserName, userName))

当与Linq to SQL或Entity Framework一起使用时, Equals执行“常规(区分大小写和对文化不敏感)比较”的情况不适用,因为该语句将转换为SQL。
数据库排序规则 (或设置为列排序规则)将确定如何处理"=" (等于)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM