LINQ(语言集合查询)疑问和理解

来源:互联网 发布:易语言逆战辅助源码 编辑:程序博客网 时间:2024/05/06 19:47

最近的项目一直和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函数

 

哎,限制太多,没心思写了,乱糟糟的~