Linq to SQL,是否支持中间字符串%通配符?

时间:2017-01-18 16:38:42

标签: c# sql linq linq-to-sql

从Linq到Sql的选择,我希望使用通配符进行字符串搜索。到目前为止,我了解可以执行以下操作

%token = column.EndsWith(value)
token% = column.StartsWith(value)
%token% = column.Contains(value)

我似乎无法获得支持

to%ken

这有什么支持吗?

更新 - 人们建议使用SqlMethods.Like - 但是这似乎不适用于我的用法,代码如下

if (!object.Children.Any() || 
    !object.Children.OrderByDescending(t => t.Version)
        .First().MetaDataPairs.Any(mdp => SqlMethods.Like(mdp.Value.ToLower(), stringmatch))) continue;

我在尝试这个时得到的错误

  

错误是方法'布尔类似(System.String,System.String)'不能   在客户端使用;它仅用于转换为SQL。

2 个答案:

答案 0 :(得分:1)

在命名空间SqlMethods中有一个like方法,你可以使用它:

Where SqlMethods.Like(entity.StringProperty, "tok%en");    

这仅适用于Linq to Sql查询,如果你想要一种更通用的方法,我建议使用Regex,如:

.Where(entity => Regex.matches(entity.StringProperty, @"(?:tok)(\w*)(?:en)");

答案 1 :(得分:0)

2条建议:

1)使用

SqlMethods.Like

2)使用正则表达式

System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex("token");