我的搜索条件存储在字符串中:
string Searchstr = "(r.Value.Contains("PwC") || (r.Value.Contains("Canadian") && r.Value.Contains("thrive"))) || (r.Value.Contains("Banana") && r.Value.Contains("Gayle"))"
我想在If语句中使用它来检查值:
if(searchstr)
{
then do this....
}
但是if应该将searchstr设置为boolean。
如何将此转换为布尔值?
编辑:要求是在文本框中以下列格式动态提供搜索条件 - “PwC OR(Canadian AND thrive)”。 这将用于搜索XML文件。
因此我加载了一个XML文件,并希望在LINQ中有一个Where条件,我需要使用Dynamic LINQ但是不允许使用字符串,而且我还有一些大括号需要处理。
考虑到我从XML(我需要搜索的标签值)中获取了结果集
var selectedBook = from r in document.Root.Descendants("Archives").Elements("Headline").Elements("Para")
select r;
并且最好尝试类似的事情:
var query=selectedbook.Where(searchstr)
OR
if(searchstr){....then do this}
答案 0 :(得分:1)
你需要做一些工作来实现这一目标,但这是可能的。
您应该看一下动态LINQ库。这允许您将LINQ条件(和其他子句)指定为字符串,并像LINQ运算符一样执行它们。
从ScottGu的博客开始解释并点击链接: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
答案 1 :(得分:0)
我假设字符串仅引用一组特定的对象(例如,在这种情况下为r
或r.Value
- 或者您想要的任何其他内容,只要您知道它预先)。如果是这种情况,那么:
delegate
,将对象(可能被引用)作为参数
并根据需要返回bool
。 CSharpCodeProvider
类编译程序集
使用自定义函数返回所需的bool
。答案 2 :(得分:0)
嗯,你可能会猜测它不是直截了当但同时它并不像看起来那么困难
您可以执行几个步骤来获得所需内容:
获取搜索表达式作为输入(例如“PwC OR(Canadian AND thrive)”)
在XElement
上编写一个返回true的扩展方法,并将搜索条件作为输入。然后您就可以使用
var selectedBook = from r in
document.Root.Descendants("Archives").Elements("Headline").Elements("Para")
where r.SatisfiesCriteria(searchCriteria)
select r;
编写一个解析searchCritera
的解析器类,并以解析后的格式存储它。 (例如,您可以将其转换为后缀表示法)。这非常简单,您可以使用standard algorithm。为了您的目的OR,AND将是运营商和PwC等将是操作数。作为解析的一部分,括号将被删除。
r.Value.Contains
答案 3 :(得分:0)