代码之家  ›  专栏  ›  技术社区  ›  TcKs

用户定义的LINQ筛选器

  •  1
  • TcKs  · 技术社区  · 16 年前

    我有带有用户定义过滤器的窗体(带有列名的组合框、带有过滤器类型的组合框和带有值的文本框)。

    如何将用户定义的过滤器动态添加到LINQ查询中?

    典型查询如下:

    var qProducts = from p in db.Products
        where p.IsArchived == false
        order by p.ProductName select p;
    

    我正在使用LINQ(IQuerableToolkit)访问SQL CE数据库中的数据。

    2 回复  |  直到 16 年前
        1
  •  4
  •   tvanfosson    16 年前

    你可能想看看 Dynamic LINQ VS2008 Samples . 然后你可以做如下的事情:

    var qProducts = db.Products
                      .Where( "IsArchived = {0}", archiveFilterValue )
                      .OrderBy( sortColumn + " " + sortDirection );
    
        2
  •  -1
  •   pomarc    16 年前

    如果需要,可以动态添加每个过滤器,例如:

    if (txtFilter1.Text!="") qProducts=qProducts.Where(s=>s.Name==txtFilter1.Text);
    if (txtFilter2.Text!="") qProducts=qProducts.Where(s=>s.Field==txtFilter2.Text);
    if (cboCombo1.SelectedValue!=0) qProducts=qProducts.Where(s=>s.price...
    

    等等