Linq dynamicznie dodaje, gdzie warunki

Mam gridview, który ma rozwijane pola w każdym nagłówku do filtrowania. Każdy filtr jest ładowany z różnymi wartościami z kolumny po załadowaniu. W czasie wykonywania dodaję „ALL”, aby umożliwić użytkownikowi wybranie wszystkich z tego pola. Usiłuję dynamicznie zbudować instrukcję linq, aby zignorować pole, jeśli pole rozwijane jest ustawione na „ALL”. czy to możliwe? Chcę zobaczyć, czy mogę to zrobić jednym stwierdzeniem. Poniższy przykład pokazuje tylko 2 listy rozwijane, ale mój przypadek ma do 5.

Jeśli wybiorę użycie instrukcji if, to otrzymam kod spaghetti.

DropDownList drpOwners = this.grdOtherQuotes.HeaderRow.FindControl("drpOwners") as DropDownList;                     
DropDownList drpCompanyName = this.grdOtherQuotes.HeaderRow.FindControl("drpCompanyName") as DropDownList;

var filteredList = (from x in allQuotes
                          where (drpOwners.SelectedValue != ALL) ? x.SalesRepFullName == drpOwners.SelectedValue:true                                    
                                && drpCompanyName.SelectedValue != ALL ? x.CompanyName == drpCompanyName.SelectedValue: true
                          select x);

questionAnswers(3)

yourAnswerToTheQuestion