Linq Query Where()SQL%等效

时间:2015-04-16 22:46:51

标签: c# sql linq

我们可以在LINQ表达式中使用方法.Contains(string),听起来像搜索文本%',方法.StartsWith(string),听起来像是搜索文本%'和方法.EndsWith(string),听起来像搜索文字'%。

但是我需要一些听起来像搜索%text%'的内容,它会找到包含' search'和'文字',但不是连续的。

示例:我有这些记录:

  

搜索我的文字

     

搜索文字

     

寻求文字

在SQL中,LIKE '%search%text%'的查询带来:

  

搜索我的文字

     

搜索以获取文字

但不会带来'seek the text'

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

您可以使用其中一种辅助方法:

var result = from o in ctx.table
where SqlMethods.Like(o.column, "%search%text%")
select o.column;

答案 1 :(得分:0)

你可以使用这样的东西:

var rx = new Regex("search.*text", RegexOptions.IgnoreCase);
List<string> lists=new List<string>(){"search text","search this text","search my book"};
var result = lists.Where(x => rx.IsMatch(x));
  

如果您以“search%text”的形式获得输入,那么您可以将“%”字符串替换为“。*”,并使用Reg ex pattern。