【问题标题】:Help with LINQ query and multiple client filters帮助 LINQ 查询和多个客户端过滤器
【发布时间】:2011-04-10 02:15:17
【问题描述】:

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

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

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

这个website 正是我想要在左侧做的事情。不同之处在于我正在过滤自动回发(一次过滤一个)。

【问题讨论】:

    标签: asp.net linq-to-sql


    【解决方案1】:

    一个 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);
    }   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 2021-06-01
      • 2018-05-12
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多