如何为动态查询字符串的字符串值添加单引号并在linq中使用它

时间:2015-04-08 08:52:07

标签: c# string linq

我在使用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方法。

请提供解决方案或我们可以实现此目的的任何其他方式。

1 个答案:

答案 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)