5

我需要在运行时根据用户的输入构建一个 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)";
            }
4

2 回答 2

1

我不知道这里使用的是什么数据类型,但是你为什么不尝试使用通用查询呢?

var query = context.Messages
    .AsQueryable();

foreach (Filter filter in filterlist)
{
    query = query
        .Where(m => m.Contains(filter));
}

这将使用 AND 连接所有条件(如您的问题所示)。

于 2010-05-14T16:17:00.950 回答
0

您也可以考虑使用 PredicateBuilder 类。使用它可以让您动态地将 AND/OR 条件添加到您的树中。参考http://www.albahari.com/nutshell/predicatebuilder.aspx

于 2010-05-15T06:51:36.947 回答