LINQ分为延后执行和立即执行
var items= db.Products;
if(!string.IsNullOrEmpty(txtProductName.Text)){
items=items.Where(p=>p.ProductName==txtProductName.Text)
}
if(cboYear.SelectedIndex!=-1){
items=items.Where(p=>p.Year==cboYear.Text)
}
.......
var result=items.ToArray();
请考虑使用Wcf Data Service,或者学习它的查询条件解析模式。
它实现了从字符串的表达式到lamda到sql的转换。
搜索System.Linq.Dynamic,这个库能帮助拼写表达式树,当然还直接提供了IQueryable的扩展方法让你可以使用.Where("title = @0 and name = @1","标题","姓名")的形式来是用linq。