开发者

How dynamic can I make my LINQ To SQL Statements?

I have the need to construct a LINQ To SQL statement at runtime based on input from a user and I can't seem to figure out how to dynamically build the WHERE clause.

I have no problem with the followin开发者_运维知识库g:

string Filters = "<value>FOO</value>";
Where("FormattedMessage.Contains(@0)",Filters)

But what I really need is to make the entire WHERE clause dynamic. This way I can add multiple conditions at runtime like this (rough idea):

 foreach (Filter filter in filterlist)
            {
                whereclause = whereclause + "&& formattedmessage.contains(filter)";
            }


I don't know what data types are being used here, but why don't you try to use general query?

var query = context.Messages
    .AsQueryable();

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

this will concatenate all the conditions using AND (as is in your question).


You may also consider using the PredicateBuilder class. Using that will allow you to dynamically add AND/OR conditions to your tree. Refer to http://www.albahari.com/nutshell/predicatebuilder.aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜