最近的項目一直和linq打交道,用是好用,就是很多地方的概念很模糊,不明確
(1)
var q = from p in _dbcontext._tableName
select p; //選擇_tableName表中的所有字段
其中q是IQueryable類型,在這個表達式中“ from p in _dbcontext._tableName”是lambda表達式?將其轉換爲sql語句?IQueryable是sql選擇出來的結果,這個時候還沒有訪問數據庫
如果用q.toList()等方法轉爲具體的對象的時候,就會查詢數據庫了,這個時候纔可能出現異常等情況。不知道lambda表達式是不是在這個時候轉換爲sql語句的?
(2)
var q = _dbcontext._tableName.SingleOrDefault(p=>p.Id = id);
這個時候雖然q類型前面仍然用var,但是其實q是一個tableName對象。“p=>p.Id = id”這個表達式其實傳遞了IQueryable對象給SingleOrDefault函數
哎,限制太多,沒心思寫了,亂糟糟的~