我是新手,前天剛開始看EF框架
然后發現,在多條件得到某個表中資料的時候(當然有很多種方法),大家會用
using (var context=new ...())
{
var users=form u in context.Users select u;
if (name!="") users=users.Where(....);
if (tel!="") users=users.Where(....);
}
我奇怪的是,為什么我搜索到的示例,都要
var users=form u in context.Users select u;
我直接
var users=context.Users;
然后再呼叫
if (name!="") users=users.Where(....);
if (tel!="") users=users.Where(....);
也能得到結果,跟蹤執行的sql,也沒有全表查詢,也是自動生成帶where條件的T-SQL陳述句
那為示例中,都要var users=form u in context.Users select u ?
我個人懷疑,是不是以前需要這么寫,在2017年的EF6.0下,微軟優化了語法?
還請大蝦指教下
uj5u.com熱心網友回復:
Linq 查詢語法和方法語法
uj5u.com熱心網友回復:
頂一頂呢,大蝦們還沒班哈
uj5u.com熱心網友回復:
那為示例中,都要var users=form u in context.Users select u ?
我個人懷疑,是不是以前需要這么寫,在2017年的EF6.0下,微軟優化了語法?
-》兩種語法方式而已,根據個人代碼習慣了,至于為什么select 這就是語法規定,不管哪種方式,最終都會轉為Sql陳述句。
uj5u.com熱心網友回復:
先有lamda,就是用方法的,后有linq,就是用陳述句的
uj5u.com熱心網友回復:
為什么用linq,因為多表聯合查詢時lamda很難寫和閱讀。
uj5u.com熱心網友回復:
其實我不理解的是,為什么要
var users=form u in context.Users select u;
直接用
var users=context.Users; 也一樣的啊
uj5u.com熱心網友回復:
var users=form u in context.Users select u;
和
var users= context.Users.AsEnumerable();
應該是一樣的
uj5u.com熱心網友回復:
那為示例中,都要var users=form u in context.Users select u ?
我個人懷疑,是不是以前需要這么寫,在2017年的EF6.0下,微軟優化了語法?
-》兩種語法方式而已,根據個人代碼習慣了,至于為什么select 這就是語法規定,不管哪種方式,最終都會轉為Sql陳述句。
var users=form u in context.Users select u;
是linq語法
var users=context.users
是lambda語法。
大同小異
uj5u.com熱心網友回復:
using (var context=new ...())
{
var users=form u in context.Users where ....... select u;
if (name!="") users=from u in user where ..... select u;
if (tel!="") users=from u in user where ..... select u;
}