Asp.net 关于LINQ查询和多个客户端筛选器的帮助

Asp.net 关于LINQ查询和多个客户端筛选器的帮助,asp.net,linq-to-sql,Asp.net,Linq To Sql,我正在显示一个产品列表,并有4个下拉列表来筛选这些数据 我如何构建一个可以考虑所有其他过滤器当前值的LINQ查询,而不必为过滤器写出每个可能的组合LINQ查询 我想从下拉列表中选择一个制造商,显示这些产品,然后能够按颜色等过滤新结果。稍后我将隐藏不适用于新过滤结果的过滤器 这正是我在左边想做的。区别在于我在自动回发上进行过滤(一次一个过滤器)。LINQ查询实际上不必都是一条语句,您可以部分构建它。当您创建一个LINQ查询时,它实际上还没有对源数据做任何事情,它只是构建了一个IEnumerable

我正在显示一个产品列表,并有4个下拉列表来筛选这些数据

我如何构建一个可以考虑所有其他过滤器当前值的LINQ查询,而不必为过滤器写出每个可能的组合LINQ查询

我想从下拉列表中选择一个制造商,显示这些产品,然后能够按颜色等过滤新结果。稍后我将隐藏不适用于新过滤结果的过滤器


这正是我在左边想做的。区别在于我在自动回发上进行过滤(一次一个过滤器)。

LINQ查询实际上不必都是一条语句,您可以部分构建它。当您创建一个LINQ查询时,它实际上还没有对源数据做任何事情,它只是构建了一个IEnumerable/IQueryable接口的表达式,这些接口彼此构建。只要不通过枚举它或调用类似于
ToList()
的方法来执行它,就可以继续添加到查询中,而不会执行它

你想要这样的东西:

// create original query, no filters
var query = from x in whatever....;

// add each filter one by one

if (condition1) 
{
    query = query.Where(row => condition 1 expression);
}

if (condition2)
{
    query = query.Where(row => condition 2 expression);
}

if (condition3)
{
    query = query.Where(row => condition 3 expression);
}   

if (condition4)
{
    query = query.Where(row => condition 4 expression);
}