我可以动态生成LINQ To SQL语句吗?

mca*_*s20 5 c# sql dynamic-linq .net-3.5 linq-to-sql

我需要在运行时根据用户的输入构造一个LINQ To SQL语句,我似乎无法弄清楚如何动态构建WHERE子句.

我对以下内容没有任何问题:

string Filters = "<value>FOO</value>";
Where("FormattedMessage.Contains(@0)",Filters)
Run Code Online (Sandbox Code Playgroud)

但我真正需要的是使整个WHERE子句动态化.这样我就可以在运行时添加多个条件(粗略的想法):

 foreach (Filter filter in filterlist)
            {
                whereclause = whereclause + "&& formattedmessage.contains(filter)";
            }
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 1

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

var query = context.Messages
    .AsQueryable();

foreach (Filter filter in filterlist)
{
    query = query
        .Where(m => m.Contains(filter));
}
Run Code Online (Sandbox Code Playgroud)

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