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

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方式执行


富国沪深
浏览 594回答 2
2回答

SMILET

你好,dudu大哥回复的确实可以.但是要注意DbContext在退出上下文后的SqlConnection被关闭的这个问题而我一般的做法是var&nbsp;result&nbsp;=&nbsp;new&nbsp;List<T>(); using&nbsp;(DbContext&nbsp;db&nbsp;=&nbsp;new&nbsp;DbContext())&nbsp;{ &nbsp;&nbsp; &nbsp;&nbsp;var&nbsp;queryable&nbsp;=&nbsp;db.xx.AsQueryable(); &nbsp;&nbsp; &nbsp;&nbsp;if&nbsp;(查询的变量有值)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;queryable&nbsp;=&nbsp;queryable.Where(m&nbsp;=>&nbsp;m.字段&nbsp;==&nbsp;查询值) &nbsp;&nbsp;} &nbsp;&nbsp; &nbsp;&nbsp;//重复上面的代码 &nbsp;&nbsp; &nbsp;&nbsp;result&nbsp;=&nbsp;queryable.ToList(); } return&nbsp;result;以上伪代码未通过测试,请根据IDE提示进行修改一下就可以了
打开App,查看更多内容
随时随地看视频慕课网APP