从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。
答案 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");