帮助LINQ查询和多个客户端过滤器

时间:2011-04-10 02:15:18

标签: asp.net linq-to-sql

我正在显示产品列表,并有4个下拉列表来过滤这些数据。

如何构建一个LINQ查询,可以将所有其他过滤器的当前值考虑在内,而无需为过滤器写出每个可能的组合LINQ查询?

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

website正是我在左侧尝试做的事情。不同之处在于我在autopostback上进行过滤(一次过滤一次)。

1 个答案:

答案 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);
}