首页 新闻 会员 周边

如何将where条件的lambda表达式 转成 sql where语句?

0
[已解决问题] 解决于 2011-09-23 10:21

List<User> GetAll();

目的是构造这样的一个方法 List<User> GetAll(predicate);

如果 GetAll()。Where(p=>p.Name=="aaa") 是在查询完全集后再赛选的,效率很低。

怎么能把  p=>p.Name=="aaa"  转成  name='aaa'

就像linq to sql那样 , 但是脱离linq to sql做底层,有什么好方法把lambda表达式翻译成条件语句,拼sql方式执行

zakkia的主页 zakkia | 菜鸟二级 | 园豆:280
提问于:2011-09-22 16:03
< >
分享
最佳答案
0

你好,

dudu大哥回复的确实可以.但是要注意DbContext在退出上下文后的SqlConnection被关闭的这个问题

而我一般的做法是

var result = new List<T>();

using (DbContext db = new DbContext()) {

var queryable = db.xx.AsQueryable();

if (查询的变量有值) {
queryable = queryable.Where(m => m.字段 == 查询值)
}

//重复上面的代码

result = queryable.ToList();
}

return result;

以上伪代码未通过测试,请根据IDE提示进行修改一下就可以了

dotNetDR_ | 老鸟四级 |园豆:2078 | 2011-09-22 21:05

不行,不要用DbContext  这linq to sql自带的我当然知道,索性我已经找到了,虽然有小bug不是很影响。

见下文:http://www.cnblogs.com/Airfeeling/archive/2011/09/14/1320397.html

zakkia | 园豆:280 (菜鸟二级) | 2011-09-23 10:19
其他回答(2)
0
IQuerable<User> GetAll(predicate)
dudu | 园豆:30994 (高人七级) | 2011-09-22 17:27
0

索性我已经找到了,虽然有小bug不是很影响。

见下文:http://www.cnblogs.com/Airfeeling/archive/2011/09/14/1320397.html

zakkia | 园豆:280 (菜鸟二级) | 2011-09-23 10:20

这个挺好,正需要哈!!谢谢

支持(0) 反对(0) lichao8872 | 园豆:230 (菜鸟二级) | 2014-07-12 16:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册