我在使用linq的where方法中传递以下查询字符串。我正在使用动态linq库。
查询字符串:
(cid=GB)AND(lvl=50 OR lvl=51 OR lvl=52 OR lvl=53 OR lvl=54 OR lvl=55 OR lvl=56 OR lvl=57 OR lvl=58 OR lvl=59 OR lvl=60)
Linq查询:
var query = context.Tablename.Where(resultQueryString, null);
在传递查询字符串之前,我必须将字符串cid更改为countrycode,将lvl更改为level。所以我用字符串构建器来替换字符串。
StringBuilder outputString = new StringBuilder(querystring);
outputString.Replace("cid","CountryCode");
outputString.Replace("lvl", "Level");
outputString.Replace("AND", "&&");
outputString.Replace("OR", "||");
这里我的问题是我必须为国家代码值添加单引号,即我必须获得类似(countrycode =' GB')&&(level = 50 || level)的输出= 51 || level = 52 ...)
我如何为国家代码值添加单引号并将该查询字符串传递给where方法。
请提供解决方案或我们可以实现此目的的任何其他方式。
答案 0 :(得分:0)
你去:
string outputString = "(cid=GB)AND(lvl=50 OR lvl=51 OR lvl=52 OR lvl=53 OR lvl=54 OR lvl=55 OR lvl=56 OR lvl=57 OR lvl=58 OR lvl=59 OR lvl=60)";
int lastindex = outputString.IndexOf(")");
int firstindex = outputString.IndexOf("=");
outputString = outputString.Substring(0, firstindex+1) + "'" + outputString.Substring(firstindex+1, 2) + "'" + outputString.Substring(lastindex);
输出是: (cid ='GB')AND(lvl = 50 OR lvl = 51 OR lvl = 52 OR lvl = 53 OR lvl = 54 OR lvl = 55 OR lvl = 56 OR lvl = 57 OR lvl = 58 OR lvl = 59 OR lvl = 60)