生成其中从使用字符串数组子句包含SQL Server
问题描述:
关键字我有这样的字符串:生成其中从使用字符串数组子句包含SQL Server
"bottle 750 green"
该字符串具有每次可变数目的单词的。我需要的,在此基础上字符串创建:
CONTAINS(descr_en,'"*bottle*" and "*750*" and "*green*"')
我会那么为了得到理想的结果附加至where子句上的SQL语句。
如何创建生成的包含子句?
我已经试过这样:
var str = "mara 750 bottle";
string[] strarr = str.Split(' ');
var result = "";
foreach (var s in strarr)
{
result += "\"*" + s + "*\"" + " AND ";
}
这给了我:"*mara*" AND "*750*" AND "*bottle*" AND
这几乎是我所需要的。
我从上面唯一需要的是摆脱了培训“以及” ...
我更喜欢基于LINQ如果可能的话干净的解决方案。 ?
//This is not literally suitable.
foreach(string s in samplestring.Split(' '))
{
yourstringbuilder.append(" and *");
yourstringbuilder.append(s);
yourstringbuilder.append("*");
}
*/
编辑:基于
答
string.Join(" AND ", "mara 750 bottle".Split(' ').Select (s => string.Format("\"*{0}*\"", s)))
给"*mara*" AND "*750*" AND "*bottle*"
答
/*为什么不建立自己的CONTAINS子句对于已编辑的问题 - 只是result = result.remove(result.Length - " AND ".Length);
你的循环后
答
这是一个相当干净的方法。
public string BuildContainsClause(string filter)
{
var keywords = filter
.Split(' ')
.Select(e => string.Format("\"*{0}*\"", e));
return string.Format("CONTAINS(descr_en,'{0}')", string.Join(" AND ", keywords));
}
用法:
var contains = BuildContainsClause("bottle 750 green");
// contains = "CONTAINS(descr_en,'\"*bottle*\" AND \"*750*\" AND \"*green*\"')"
我更新了我的问题,因为我觉得我在做什么,你说什么,但我需要摆脱的结局和... – e4rthdog 2013-03-26 09:49:53