Conditional WHERE in LINQ

Hi any suggestions on building a LINQ statement based on search criteria?

I'll be passing in an instance of a 'SearchCriteria' class with all parameters nullable.

I then want to

if (sc.a != null)
    // add to where

if (sc.b != null)
    // add to where

The key thing is these are to be ORs not ANDs.

Any tips?

And for bonus points I'd like to use 'contains' on an int? but I can only get equals or not equals.

Answers


Try:

.Where(x =>
    (x.a != null ? x.a == a : false) &&
    (x.b != null ? x.b == b : false));

or

.Where(x =>
    (x.a != null && x.a == a) ||
    (x.b != null && x.b == b));

Also:

.Where(x => new int[] { 1, 2, 3 }.Contains(x.i));

Need Your Help

How do compilers know when not to recompile?

c++ compiler-construction

How do compilers know when it is not necessary to recompile certain parts of code especially in larger projects?

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.