全字匹配查询:将sql转换为linq

时间:2014-05-30 05:07:13

标签: c# sql-server entity-framework linq dbcontext

考虑包含以下数据的数据库:

id      title
1       cooking assembler
2       time assembler
3       time disassembler
4       time assembly
5       cooking assembly

如果我在工作室经理的sql中输入

select id from titles where contains(title, 'assembler')

我得到1和2 - 很棒 如果我这样做查询

select id from titles where contains(title, 'disassembler')

我得到3 - perf 这正是我想要的

但现在我跳到c#
写下这个:

dbcontext.titles_data.where(t=>t.Contains('assembler')

给了我1,2和3 - 不是我想要的 我想要的sql的c#等价物是什么?

2 个答案:

答案 0 :(得分:0)

这个怎么样:

var searchPattern = new Regex(@"\b(assembler)\b", RegexOptions.IgnoreCase);
var Result = test.Where(i => searchPattern.IsMatch(i));

答案 1 :(得分:0)

感谢@aliriza
我在这篇文章中应用了解决方案:
Search for whole word with Linq to SQL

代码现在看起来像:

string t = "parrothead";
List<titles> tData = db.titles_data.Where(
    o=> o.title.Contains(" " + t + " ") || 
    o.title.StartsWith(t + " ") || 
    o.title.EndsWith(" "+ t)).ToList();