我正在显示产品列表,并有4个下拉列表来过滤这些数据。
如何构建一个LINQ查询,可以将所有其他过滤器的当前值考虑在内,而无需为过滤器写出每个可能的组合LINQ查询?
我想从下拉列表中选择一个制造商,显示这些产品,然后能够按颜色等过滤新的结果。稍后我将隐藏不适用于新过滤结果的过滤器。
这website正是我在左侧尝试做的事情。不同之处在于我在autopostback上进行过滤(一次过滤一次)。
答案 0 :(得分:2)
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);
}