Search code examples
c#linqlinq-to-sql

How can I conditionally apply a Linq operator?


We're working on a Log Viewer. The use will have the option to filter by user, severity, etc. In the Sql days I'd add to the query string, but I want to do it with Linq. How can I conditionally add where-clauses?


Solution

  • if you want to only filter if certain criteria is passed, do something like this

    var logs = from log in context.Logs
               select log;
    
    if (filterBySeverity)
        logs = logs.Where(p => p.Severity == severity);
    
    if (filterByUser)
        logs = logs.Where(p => p.User == user);
    

    Doing so this way will allow your Expression tree to be exactly what you want. That way the SQL created will be exactly what you need and nothing less.