我需要在运行时根据用户的输入构造一个LINQ To SQL语句,而我似乎无法弄清楚如何动态构建WHERE子句。
我对以下内容没有任何问题:
string Filters = "<value>FOO</value>";
Where("FormattedMessage.Contains(@0)",Filters)
但我真正需要的是使整个WHERE子句动态化。这样我就可以在运行时添加多个条件(粗略的想法):
foreach (Filter filter in filterlist)
{
whereclause = whereclause + "&& formattedmessage.contains(filter)";
}
答案 0 :(得分:1)
我不知道这里使用的是哪种数据类型,但为什么不尝试使用常规查询?
var query = context.Messages
.AsQueryable();
foreach (Filter filter in filterlist)
{
query = query
.Where(m => m.Contains(filter));
}
这将使用AND连接所有条件(如你的问题所示)。
答案 1 :(得分:0)
您也可以考虑使用PredicateBuilder类。使用它可以动态地向树中添加AND / OR条件。 请参阅http://www.albahari.com/nutshell/predicatebuilder.aspx