Реализация условных операторов 'if' в операторе LINQ запросов 'where'

Я пытаюсь выяснить способ запроса объекта в моей модели данных и включить только те параметры, которые не равны нулю. Как показано ниже :

public List<Widget> GetWidgets(string cond1, string cond2, string cond3)
{
    MyDataContext db = new MyDataContext();
    List<Widget> widgets = (from w in db.Widgets
                            where 
                                ... if cond1 != null w.condition1 == cond1 ...
                                ... if cond2 != null w.condition2 == cond2 ...
                                ... if cond3 != null w.condition3 == cond3 ...
                            select w).ToList();
    return widgets;
}

Поскольку таблица виджетов может стать очень большой, я бы не хотел этого делать:

public List<Widget> GetWidgets(string cond1, string cond2, string cond3)
{
    MyDataContext db = new MyDataContext();
    List<Widget> widgets = db.Widgets.ToList();

    if(cond1 != null)
        widgets = widgets.Where(w => w.condition1 == cond1).ToList();

    if(cond2 != null)
        widgets = widgets.Where(w => w.condition2 == cond2).ToList();

    if(cond3 != null)
        widgets = widgets.Where(w => w.condition3 == cond3).ToList();

    return widgets;
}

Я просмотрел несколько примеров, но на самом деле не вижу ничего, что соответствует тому, что мне нужно сделать.

15
задан Timwi 21 September 2010 в 13:54
поделиться