Following on from a previous question i asked, I'm now trying to figure out how to build dynamic expressions for both AND & OR queries.

Given the following string array:

string[] ranges = new string[]{"0-100", "100-200", "500-1000"};

I would like to dynamically express this in a linq expression - Something along the lines of:

var v = from p in products
        where 
        (p.Amount >= 0 && p.Amount <= 100) ||
        (p.Amount >= 101 && p.Amount <= 200) ||
        (p.Amount >= 500 && p.Amount <= 1000)
        select p;

How do i dynamically build the linq expression in this loop?

string[] ranges = new string[]{"0-100", "100-200", "500-1000"};

var query = products.AsQueryable();

foreach (var item in ranges)
{
    int min = int.Parse(item.Split('-').First());
    int max = int.Parse(item.Split('-').Last());                
    //Linq expression?
}
Edit
Report