我有一个文本框,用户可以通过添加and
和or
关键字来键入要搜索的关键字,以使关键字像SQL过滤器一样工作。如何使用Linq执行此类搜索?如果可能,请同时考虑括号(()
)。
答案 0 :(得分:2)
如果它将是自由文本输入,例如
LastName = "Smith" and FirstName = "John"
然后您可能会发现使用Scott Guthrie的Dynamic Linq库很有帮助,该库提供了一个Where()
方法,该方法接受一个解析为lambda的字符串。然后你可以做这样的事情:
string searchQuery = GetSearchQueryFromTextBox();
var searchResult = customers.Where(searchQuery);
它支持and
和or
运算符,如上所示,以及括号和其他运算符和方法的主机。
答案 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