为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2018-12-05 14:08:14
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方式执行
查看完整描述

2 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

你好,

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提示进行修改一下就可以了


查看完整回答
反对 回复 2018-12-09
  • 2 回答
  • 0 关注
  • 590 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信