最近的项目一直和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函数
哎,限制太多,没心思写了,乱糟糟的~