我的表单包含用户定义的过滤器(带有列名的组合框,带有过滤器类型的组合框和带有值的文本框)。
如何动态地将用户定义的过滤器添加到LINQ查询中?
典型查询如下:
var qProducts = from p in db.Products
where p.IsArchived == false
order by p.ProductName select p;
我正在使用LINQ(IQuerable Toolkit)来访问SQL CE数据库中的数据。
答案 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...
等等