日期:2014-05-20  浏览次数:20829 次

关于linq,问一个linq内部执行的问题
DataClassesDataContext dataContext = new DataClassesDataContext();
var re = from a in dataContext.E_Enterprise
  where a.Email != string.Empty
  select a;

以上代码里的 from a in dataContext.E_Enterprise
他是和sql语句一样的执行方式吗?
select * from E_Enterprise where Email != string.Empty  
sql在这里是按条件去查找数据。
那么上面那段linq的代码,他是先把整个表的数据取出来再按条件获取的,还是跟上面的sql语句一样?

不知道我说明白没有。

------解决方案--------------------
var re = from a in dataContext.E_Enterprise
where a.Email != string.Empty
select a;

这段代码在执行时,会先翻译成对应的SQL语句(这个你可以在调试时查看dataContext.Log)
然后将SQL语句发送给SQL执行返回结果
------解决方案--------------------
是在数据库那里处理的。
查询会被编译为查询表达式,linq to sql会把它转化为sql。
------解决方案--------------------
SQL其实就是先执行FROM的,Linq to sql这么设计估计就是这个原因吧。Linq to sql最终会翻译成sql的