Micheal
Micheal

Reputation: 65

C# Linq where clause

I'm trying to create a linq query where clause is a constructed variable based on user choices

if (!string.IsNullOrEmpty(txbbox.Text)) 
{

  query = "s.date== DateTime.Parse(txbbox.Text)";
}

if (!string.IsNullOrEmpty(txbbox.Text))
{
   query = query + " & (s.type.Contains(txbbox.Text))";
}

there is a way to pass the variable built in the where clause in a LINQ query?

 Stemp = (from s in SList
               where ***query***
               orderby s.DataScadenza
               select s).ToList();

Upvotes: 3

Views: 2308

Answers (1)

Marc Gravell
Marc Gravell

Reputation: 1062660

Yes; quite simple in this case, actually:

    IEnumerable<Whatever> query = SList; // avoid var here, as will impact later assignment
    if (!string.IsNullOrEmpty(txbbox.Text)) 
    {
        var when = DateTime.Parse(txbbox.Text); // to avoid parsing per item
        query = query.Where(s => s.date == when);
    }
    if (!string.IsNullOrEmpty(txbbox.Text))
    {
        query = query.Where(s => s.type.Contains(txbbox.Text));
    }
    Stemp = query.OrderBy(s => s.DateScadenze).ToList();

Upvotes: 6

Related Questions