用户定义的linq过滤器

时间:2009-04-28 15:30:20

标签: .net linq filter

我的表单包含用户定义的过滤器(带有列名的组合框,带有过滤器类型的组合框和带有值的文本框)。

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

典型查询如下:

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

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

2 个答案:

答案 0 :(得分:4)

您可能希望查看Dynamic LINQ中的VS2008 Samples。然后你可以做类似的事情:

var qProducts = db.Products
                  .Where( "IsArchived = {0}", archiveFilterValue )
                  .OrderBy( sortColumn + " " + sortDirection );

答案 1 :(得分:-1)

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

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...

等等