使用And和Or关键字搜索实现高级搜索

时间:2011-04-17 14:04:56

标签: c# linq

我有一个文本框,用户可以通过添加andor关键字来键入要搜索的关键字,以使关键字像SQL过滤器一样工作。如何使用Linq执行此类搜索?如果可能,请同时考虑括号(())。

2 个答案:

答案 0 :(得分:2)

如果它将是自由文本输入,例如

LastName = "Smith" and FirstName = "John"

然后您可能会发现使用Scott Guthrie的Dynamic Linq库很有帮助,该库提供了一个Where()方法,该方法接受一个解析为lambda的字符串。然后你可以做这样的事情:

string searchQuery = GetSearchQueryFromTextBox();
var searchResult = customers.Where(searchQuery);

它支持andor运算符,如上所示,以及括号和其他运算符和方法的主机。

答案 1 :(得分:0)

from s in search 
where 
  ((s.operatorKeyword == "and" && (s.property1 == "1" && s.property2 == "2")) || 
   (s.operatorKeyword == "or"  && (s.property1 == "1" || s.property2 == "2")))
select s