首页 新闻 会员 周边

linq 实现动态追加where条件

1
悬赏园豆:50 [已解决问题] 解决于 2011-06-16 16:25

请问:有这种情况:
有很多搜索条件,但是不一定同时有条件,也不一定条件同时为空,我想用linq 实现动态添加检索条件,应该怎么实现?求助ing 先谢谢各位大虾了
详细如图(不想用存储过程)
 

何以解忧唯有撸码的主页 何以解忧唯有撸码 | 初学一级 | 园豆:37
提问于:2011-06-02 11:47
< >
分享
最佳答案
1

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();
我是这样想的,不知道行不行,你可以试试,这就是用到了LINQ的延后执行特性,只有在最后一句才真正连接数据库取得数据。

收获园豆:50
| 菜鸟二级 |园豆:219 | 2011-06-02 13:47
果然没问题! 谢谢大侠!
何以解忧唯有撸码 | 园豆:37 (初学一级) | 2011-06-03 14:36
其他回答(4)
0

请考虑使用Wcf Data Service,或者学习它的查询条件解析模式。

它实现了从字符串的表达式到lamda到sql的转换。

Launcher | 园豆:45045 (高人七级) | 2011-06-02 17:19
1

搜索System.Linq.Dynamic,这个库能帮助拼写表达式树,当然还直接提供了IQueryable的扩展方法让你可以使用.Where("title = @0 and name = @1","标题","姓名")的形式来是用linq。

潜水的 | 园豆:205 (菜鸟二级) | 2011-06-02 23:37
0

linq动态很麻烦,Linq To Sql支持用户动态生成lambda表达式。

动态构造这个Expression Tree

Linq To Sql进阶系列(六)用object的动态查询与保存log篇

肉饽饽 | 园豆:215 (菜鸟二级) | 2011-06-03 16:19
0
Tim_ | 园豆:224 (菜鸟二级) | 2011-06-17 12:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册