List<User> GetAll();目的是構(gòu)造這樣的一個(gè)方法 List<User> GetAll(predicate);如果 GetAll()。Where(p=>p.Name=="aaa") 是在查詢完全集后再賽選的,效率很低。怎么能把 p=>p.Name=="aaa" 轉(zhuǎn)成 name='aaa'就像linq to sql那樣 , 但是脫離linq to sql做底層,有什么好方法把lambda表達(dá)式翻譯成條件語(yǔ)句,拼sql方式執(zhí)行
2 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
你好,
dudu大哥回復(fù)的確實(shí)可以.但是要注意DbContext在退出上下文后的SqlConnection被關(guān)閉的這個(gè)問(wèn)題
而我一般的做法是
var result = new List<T>(); using (DbContext db = new DbContext()) { var queryable = db.xx.AsQueryable(); if (查詢的變量有值) { queryable = queryable.Where(m => m.字段 == 查詢值) } //重復(fù)上面的代碼 result = queryable.ToList(); } return result;
以上偽代碼未通過(guò)測(cè)試,請(qǐng)根據(jù)IDE提示進(jìn)行修改一下就可以了
- 2 回答
- 0 關(guān)注
- 632 瀏覽
添加回答
舉報(bào)
0/150
提交
取消