我有一个gridview,它在每个标题中都有用于过滤的下拉框。每个过滤器在加载时都会加载其列中的不同值。在运行时,我添加“ALL”以允许用户从该字段中选择所有内容。如果下拉框设置为“ALL”,我正在尝试动态构建 linq 语句以忽略该字段。这可能吗?我想看看我是否可以在一个声明中做到这一点。下面的示例仅显示 2 个下拉框,但我的实际案例最多有 5 个。
如果我选择使用 if then 语句,我最终会得到意大利面条代码。
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);