繁体   English   中英

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

[英]How dynamic can I make my LINQ To SQL Statements?

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

我不知道这里使用了哪些数据类型,但为什么不尝试使用常规查询?

var query = context.Messages
    .AsQueryable();

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM