IEnumerable方式:

public IEnumerable<WebManageUsers> GetWebManageUsers(ISpecification<WebManageUsers> specification)
{
var linq = base.GetEntities(specification).AsQueryable()
.Include(i => i.WebManageUser_WebManageRoles)
.AsQueryable(); //include会增加链库操作
return linq;
}

解释成sql:
exec sp_executesql N'SELECT
[Project1].[ManageUserID] AS [ManageUserID],
[Project1].[LoginName] AS [LoginName],
[Project1].[Password] AS [Password],
[Project1].[RealName] AS [RealName],
[Project1].[Gender] AS [Gender],
[Project1].[Phone] AS [Phone],
[Project1].[Mobile] AS [Mobile],
[Project1].[Email] AS [Email],
[Project1].[AvatarUrl] AS [AvatarUrl],
[Project1].[QQ] AS [QQ],
[Project1].[MSN] AS [MSN],
[Project1].[Rtx] AS [Rtx],
[Project1].[Birthday] AS [Birthday],
[Project1].[Description] AS [Description],
[Project1].[DepartmentID] AS [DepartmentID],
[Project1].[CreateDate] AS [CreateDate],
[Project1].[UpdateDate] AS [UpdateDate],
[Project1].[Operator] AS [Operator],
[Project1].[Status] AS [Status],
[Project1].[IntroductionURL] AS [IntroductionURL],
[Project1].[WebSystemID] AS [WebSystemID],
[Project1].[C1] AS [C1],
[Project1].[ManageUserID1] AS [ManageUserID1],
[Project1].[ManageRoleID] AS [ManageRoleID],
[Project1].[CreateDate1] AS [CreateDate1]
FROM ( SELECT
[Extent1].[ManageUserID] AS [ManageUserID],
[Extent1].[LoginName] AS [LoginName],
[Extent1].[Password] AS [Password],
[Extent1].[RealName] AS [RealName],
[Extent1].[Gender] AS [Gender],
[Extent1].[Phone] AS [Phone],
[Extent1].[Mobile] AS [Mobile],
[Extent1].[Email] AS [Email],
[Extent1].[AvatarUrl] AS [AvatarUrl],
[Extent1].[QQ] AS [QQ],
[Extent1].[MSN] AS [MSN],
[Extent1].[Rtx] AS [Rtx],
[Extent1].[Birthday] AS [Birthday],
[Extent1].[Description] AS [Description],
[Extent1].[DepartmentID] AS [DepartmentID],
[Extent1].[CreateDate] AS [CreateDate],
[Extent1].[UpdateDate] AS [UpdateDate],
[Extent1].[Operator] AS [Operator],
[Extent1].[Status] AS [Status],
[Extent1].[IntroductionURL] AS [IntroductionURL],
[Extent1].[WebSystemID] AS [WebSystemID],
[Extent2].[ManageUserID] AS [ManageUserID1],
[Extent2].[ManageRoleID] AS [ManageRoleID],
[Extent2].[CreateDate] AS [CreateDate1],
CASE WHEN ([Extent2].[ManageUserID] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]
FROM [dbo].[WebManageUsers] AS [Extent1]
LEFT OUTER JOIN [dbo].[WebManageUser_WebManageRoles] AS [Extent2] ON [Extent1].[ManageUserID] = [Extent2].[ManageUserID]
WHERE (@p__linq__0 = 1) AND ([Extent1].[CreateDate] > (CASE WHEN (@p__linq__1 IS NULL) THEN @p__linq__2 ELSE @p__linq__1 END)) AND ([Extent1].[CreateDate] < (CASE WHEN (@p__linq__3 IS NULL) THEN @p__linq__4 ELSE @p__linq__3 END))
) AS [Project1]
ORDER BY [Project1].[ManageUserID] ASC, [Project1].[C1] ASC',N'@p__linq__0 bit,@p__linq__1 datetime2(7),@p__linq__2 datetime2(7),@p__linq__3 datetime2(7),@p__linq__4 datetime2(7)',@p__linq__0=1,@p__linq__1=NULL,@p__linq__2='0001-01-01 00:00:00',@p__linq__3=NULL,@p__linq__4='9999-12-31 23:59:59.9999999'

IQueryable方式:

   public IQueryable<WebManageUsers> GetWebManageUsers(ISpecification<WebManageUsers> specification)
{
var linq = base.GetEntities(specification).AsQueryable()
.Include(i => i.WebManageUser_WebManageRoles)
.AsQueryable(); //include会增加链库操作
return linq;
}
解释成sql:
exec sp_executesql N'SELECT
[Extent1].[ManageUserID] AS [ManageUserID],
[Extent1].[CreateDate] AS [CreateDate],
[Extent1].[RealName] AS [RealName]
FROM [dbo].[WebManageUsers] AS [Extent1]
WHERE (@p__linq__0 = 1) AND ([Extent1].[CreateDate] > (CASE WHEN (@p__linq__1 IS NULL) THEN @p__linq__2 ELSE @p__linq__1 END)) AND ([Extent1].[CreateDate] < (CASE WHEN (@p__linq__3 IS NULL) THEN @p__linq__4 ELSE @p__linq__3 END))',N'@p__linq__0 bit,@p__linq__1 datetime2(7),@p__linq__2 datetime2(7),@p__linq__3 datetime2(7),@p__linq__4 datetime2(7)',@p__linq__0=1,@p__linq__1=NULL,@p__linq__2='0001-01-01 00:00:00',@p__linq__3=NULL,@p__linq__4='9999-12-31 23:59:59.9999999'

以上说明:

IQueryable才是linq的延时加载
啥时候用:
1 结果集很大,返回的字段可能需要组装
2 使用 result = result.Skip(pageSize * (pageIndex - 1)).Take(pageSize);分页时

Linq 的IQueryable和IEnumerable方式的更多相关文章

  1. IQueryable和IEnumerable

    使用EF你必须知道这两个的区别,可以帮助我们的提升性能. 表达树:Linq 表达 ①IQueryable和IEnumerable IQueryable 延时执行:扩展方法接受的是Expression( ...

  2. LINQ查询中的IEnumerable<T>和IQueryable<T>

    LINQ查询方法一共提供了两种扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展:Queryab ...

  3. 编写高质量代码改善C#程序的157个建议——建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T>

    建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T> LINQ查询一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:E ...

  4. C# IEnumerable与IQueryable ,IEnumerable与IList ,LINQ理解Var和IEnumerable

    原文:https://www.cnblogs.com/WinHEC/articles/understanding-var-and-ienumerable-with-linq.html 使用LINQ从数 ...

  5. IQueryable和IEnumerable,IList的区别

    IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution) IQueryable和IEnumerabl ...

  6. C# IQueryable和IEnumerable的区别

    在使用EF查询数据的时候,我们常用的查询数据方式有linq to sql,linq to object, 查询返回的结果有两种类型:IQueryable.IEnumerable,两者内部的处理机制是完 ...

  7. C#编程之IList<T>、List<T>、ArrayList、IList, ICollection、IEnumerable、IEnumerator、IQueryable 和 IEnumerable的区别

    额...今天看了半天Ilist<T>和List<T>的区别,然后惊奇的发现使用IList<T>还是List<T>对我的项目来说没有区别...  在C#中 ...

  8. IQueryable 和 IEnumerable

    IQueryable 和 IEnumerable 其实,对于上面的即有过虑又有排序的条件查询Linq语句,EF是读取数据库中整个Books表中的数据到内存,还是根据Linq查询语句智能的生成SQL再执 ...

  9. IQueryable和IEnumerable以及AsEnumerable()和ToList()的区别

    注意:本文背景为 Linq to sql .文中ie指代IEnumerable,iq指代IQueryable. IQueryable 和 IEnumerable 的区别 IQueryable 延时执行 ...

随机推荐

  1. 《深度探索C++对象模型》学习笔记

    1.转型其实是一种编译器指令, 大部分情况下它并不改变一个指针所含的真正地址,它只影响"被指出之内存的大小和内容"的解释方式. 2.Global objects的内存保证会在程序启 ...

  2. android手机屏幕分辨率 及 sp dip(dp) px 区别 及高中低分辨率时处理

    分辨率,是指单位长度内包含的像素点的数量,它的单位通常为像素/英寸(ppi).以分辨率为1024×768的屏幕来说,即每一条水平线上包含有1024个像素点,共有768条线,即扫描列数为1024列,行数 ...

  3. HDU-4515 小Q系列故事——世界上最遥远的距离

    小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

  4. platform机制

    最近在看SPI.I2C这样简单点的总线驱动程 序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver.现在Linux中 大部分的 ...

  5. wuzhicms常见函数方法的整理收集

    函数(方法) 含义功能 PHP file_exists() 函数 检查文件或目录是否存在.如果指定的文件或目录存在则返回 true,否则返回 false 五指cms MSG MSG($msg, $go ...

  6. HDOJ-ACM1071(JAVA) 定积分

    这道题做起来有点无奈,定积分已经忘得差不多了~还可恶的去搜索了抛物线的解析式的求法~哈哈 不过求出来的结果不对...等有时间再去研究这个数学问题吧 - - 以下是JAVA实现: import java ...

  7. hdu 3549 Flow Problem (最大流)

    裸最大流,做模板用 m条边,n个点,求最大流 #include <iostream> #include <cstdio> #include <cstring> #i ...

  8. Sublime Text 教程

    编辑器的选择(Editor Choices) 从初学编程到现在,我用过的编辑器有EditPlus.UltraEdit.Notepad++.Vim.TextMate和Sublime Text,如果让我从 ...

  9. 正则匹配:Email 密码强度 身份证 手机号 日期 数字每4个字空一格等

    正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升.下面是在前端开发中经常 ...

  10. 使用Git push时出现的一些问题处理

    1.第一个问题 Permission denied (publickey). fatal: Could not read from remote repository. Please make sur ...