将不确定变成确定~LINQ查询两种写法,性能没有影响,优化查询应该是“按需查询”

如果在linq中希望进行一对多的复合查询时,请直接在查询中使用join into,或者使用let 关键字,当然在建立实体时动态赋值对于查询的性能也是没有影响的,两次查询结果完成相同

一 :在实体中赋值

var linq = from data in this.GetModel()
join data2 in iWebDepartmentsRepository.GetModel() on data.DepartmentID equals data2.DepartmentID
select new WebManageUsers_Ext
{
ManageUserID = data.ManageUserID,
LoginName = data.LoginName,
WebDepartments_Extend = data2,
WebManageUser_WebManageRoles_Extend = new WebManageUser_WebManageRolesRepository().GetModel().Where(i => i.ManageUserID == data.ManageUserID),
AvatarUrl = data.AvatarUrl, };

二:在语句中使用let关键字

var linq = from data in this.GetModel()
join data2 in iWebDepartmentsRepository.GetModel() on data.DepartmentID equals data2.DepartmentID
let list = new WebManageUser_WebManageRolesRepository().GetModel().Where(i => i.ManageUserID == data.ManageUserID)
select new WebManageUsers_Ext
{
ManageUserID = data.ManageUserID,
LoginName = data.LoginName,
WebDepartments_Extend = data2,
WebManageUser_WebManageRoles_Extend = list,
AvatarUrl = data.AvatarUrl, };
两次的SQL分析器的结果是完成一样的
当然,对于LINQ的查询,最好的方式就是“按需”查询,也就是说,用到哪些字段就select哪些字段,代码可能是这样:
var linq = from data in db.WebManageUsers
join data2 in db.WebDepartments on data.DepartmentID equals data2.DepartmentID
let list1 = db.WebManageUser_WebManageRoles.Where(i => i.ManageUserID == data.ManageUserID).Select(j => new WebManageUser_WebManageRoles_Ext
{
ManageRoleID = j.ManageRoleID,
ManageUserID = j.ManageUserID
})
select new WebManageUsers_Ext
{
ManageUserID = data.ManageUserID,
LoginName = data.LoginName,
RealName = data.RealName,
WebDepartments_Extend = new WebDepartments_Ext { DepartmentName = data2.DepartmentName },
WebManageUser_WebManageRoles_Extend = list1,
};

linq按需查询的更多相关文章

  1. 转linq中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take

    Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个. First():操作一个集合,可以有多个对象匹配,但是只返回第一个. Take(1):操作一个集合,可以有对个对象匹配,单只 ...

  2. LINQ to Entities 查询语法

    转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET  ...

  3. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  4. LINQ to Entities 查询注意事项

    1> 排序信息丢失 如果在排序操作之后执行了任何其他操作,则不能保证这些附加操作中会保留排序结果.这些操作包括 Select 和 Where 等.另外,采用表达式作为输入参数的 First 和 ...

  5. CakePHP采用model的save方法更新数据所需查询

    采用model的save方法更新数据所需查询 1. 验证时候要确认是update 或者 create,以便使用对应规则 public $validate = array( 'field_name' = ...

  6. xBIM 使用Linq 来优化查询

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  7. C# - LINQ 语言集成查询

    LINQ(Language Integrated Query) LINQ语言集成查询是一组用于C#语言的扩展.它允许编写C#代码对数据集进行查询,比如查询内存中的对象或查询远程数据库的表.利用linq ...

  8. linq not in 查询

    想要的sql: select A.* from BL_BCSS_Invoice A join BL_BCSS_OfflineInvoice B on A.ID!=B.InvoiceID; 不知道如何写 ...

  9. C#编程(六十二)---------LINQ标准的查询操作符

    LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作”类型”进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. ...

随机推荐

  1. bzoj1597

    首先不难想到排序,这种无规律的东西一般都要转化为有规律才好做 首先以x为第一关键字,y为第二关键字升序排序 拍完序我们发现,若存在两块土地i,j x[i]<=x[j],y[i]<=y[j] ...

  2. StorSimple 简介

     2014年 10月 28日,星期二 PRACHEETI NAGARKAR DESAI 混合云存储业务资深项目经理 在此我很荣幸地宣布StorSimple解决方案已经在中国正式上市.该方案为IT部 ...

  3. WebLogic12c 注册windows系统服务

    1.确认操作系统环境变量中的JAVA_HOME=D:\Oracle\Middleware\jdk160_29与安装部署的位置保持一致: 2.编辑D:\Oracle\Middleware\wlserve ...

  4. Unity3D与iOS消息交互方法(1)--iOS接收Unity3D发出的消息

    跨平台这种事情不管多NB, 总要有些与原生系统交互的方法, 比如  Unity3D与iOS消息交互方法. 一: 建立一个空的Unity工程. File -->  New Project 二: 编 ...

  5. T-SQL查询进阶--详解公用表表达式(CTE)

    简介 对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的. 但是,视图是作为系统对象存在数据库中,那对于结果 ...

  6. 迷宫城堡--HDOJ 1269

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. 查看当前hadoop的版本号

    查看当前hadoop的版本号: 2015-01-20 20:58:03

  8. 作品第一课----获取批量checkbox选中的值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. background-attachment:fixed应用

    设置为fixed属性,背景相对于屏幕窗口固定,然后如果有一张全屏的图片,再来一张全屏的图片,就可以看到与平时滚动屏幕不同的切换图片.代码CSS部分: html, body,.content{ heig ...

  10. windows2012 IIS8.5 不能在此路径中使用此配置节

    IIS 8.5 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 o ...