Linq的常见查询
首先定义几个模型类:
- /// <summary>
- /// 员工类
- /// </summary>
- public class Employee
- {
- /// <summary>
- /// 员工id
- /// </summary>
- public int Empid { get; set; }
- /// <summary>
- /// 部门id
- /// </summary>
- public int DeptId { get; set; }
- /// <summary>
- /// 员工姓名
- /// </summary>
- public string EmpName { get; set; }
- /// <summary>
- /// 员工编号
- /// </summary>
- public string EmpCode { get; set; }
- }
- /// <summary>
- /// 部门模型
- /// </summary>
- public class DeptModel
- {
- /// <summary>
- /// 部门id
- /// </summary>
- public int DeptId { get; set; }
- /// <summary>
- /// 部门名称
- /// </summary>
- public string DeptName { get; set; }
- }
组装数据:
- /// <summary>
- /// 员工数据
- /// </summary>
- private static List<Employee> Emp = new List<Employee>()
- {
- new Employee {Empid=,DeptId=,EmpName="王芳",EmpCode="" },
- new Employee {Empid=,DeptId=,EmpName="韩丽",EmpCode="" },
- new Employee {Empid=,DeptId=,EmpName="李飞",EmpCode="" },
- new Employee {Empid=,DeptId=,EmpName="李丽",EmpCode="" },
- new Employee {Empid=,DeptId=,EmpName="王二麻",EmpCode="" },
- new Employee {Empid=,DeptId=,EmpName="刘慧",EmpCode="" },
- new Employee {Empid=,DeptId=,EmpName="张飞",EmpCode="" },
- new Employee {Empid=,DeptId=,EmpName="测试人员",EmpCode="" },
- };
- /// <summary>
- /// 部门数据
- /// </summary>
- private static List<DeptModel> Dept = new List<DeptModel>()
- {
- new DeptModel {DeptId=,DeptName="产品部" },
- new DeptModel {DeptId=,DeptName="管理层" },
- new DeptModel {DeptId=,DeptName="人事部" },
- new DeptModel {DeptId=,DeptName="研发部" },
- new DeptModel {DeptId=,DeptName="项目部" },
- new DeptModel {DeptId=,DeptName="市场部" },
- new DeptModel {DeptId=,DeptName="测试部门" },
- };
1、内连接(join)查询
- //Lambda写法
- var data = Emp.Join(Dept, e => e.DeptId, d => d.DeptId, (e, d) => new { e, d }).ToList();
- //Linq写法
- var data2 = (from e in Emp
- join d in Dept
- on e.DeptId equals d.DeptId
- select new { e, d }).ToList();
2、左(left join )连接查询
- //Linq写法
- var data3 = (from e in Emp
- join d in Dept
- on e.DeptId equals d.DeptId into list
- from dept in list
- select new { e, dept }).ToList();
- //Lambda写法
- var data4 = Emp.GroupJoin(Dept, e => e.DeptId, d => d.DeptId, (e, d) => new { e, d = d.FirstOrDefault() }).ToList();
3、交叉(Corss join)连接
- //Linq写法
- var data5 = (from e in Emp
- from d in Dept
- select new { e, d }).ToList();
- //Lambda写法
- var data6 = Emp.SelectMany(emp => Dept.Select(dept => new { emp, dept })).ToList();
Lambda
- Func<int, string> fun = (int a) => { return "返回值" + a; };
- Func<int, string> fun2 = delegate (int a) { return "返回值" + a; };
- Action action = () => { Console.WriteLine("返回值1"); };
- Action action2 = delegate () { Console.WriteLine("返回值2"); };
- Predicate<int> predicate = delegate (int a) { return a > ; };
- Predicate<int> predicate3 = (int a) => { return a > ; };
Linq的常见查询的更多相关文章
- Linq之常见关键字
目录 写在前面 系列文章 常见关键字 总结 写在前面 前面的几篇文章算是对linq的铺垫,从本篇开始将进行linq的语法及实践. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda ...
- 转linq中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take
Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个. First():操作一个集合,可以有多个对象匹配,但是只返回第一个. Take(1):操作一个集合,可以有对个对象匹配,单只 ...
- LINQ to Entities 查询语法
转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ...
- 浅谈sql 、linq、lambda 查询语句的区别
浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...
- LINQ to Entities 查询注意事项
1> 排序信息丢失 如果在排序操作之后执行了任何其他操作,则不能保证这些附加操作中会保留排序结果.这些操作包括 Select 和 Where 等.另外,采用表达式作为输入参数的 First 和 ...
- 高性能MySql进化论(十一):常见查询语句的优化
总结一下常见查询语句的优化方式 1 COUNT 1. COUNT的作用 · COUNT(table.filed)统计的该字段非空值的记录行数 · ...
- xBIM 使用Linq 来优化查询
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- C# - LINQ 语言集成查询
LINQ(Language Integrated Query) LINQ语言集成查询是一组用于C#语言的扩展.它允许编写C#代码对数据集进行查询,比如查询内存中的对象或查询远程数据库的表.利用linq ...
- linq not in 查询
想要的sql: select A.* from BL_BCSS_Invoice A join BL_BCSS_OfflineInvoice B on A.ID!=B.InvoiceID; 不知道如何写 ...
随机推荐
- 黄聪:HBuilder左侧项目管理器如何不与标签页一起自动切换
把这个按钮取消就好了
- php源码安装常用配置参数和说明
常用的配置参数1. --prefix=/usr/local/php 指定 php 安装目录 install architecture-independent files in PREFIX 默认/us ...
- 数据仓库专题(5)-如何构建主题域模型原则之站在巨人的肩上(二)NCR FS-LDM主题域模型划分
一.前言 分布式数据仓库模型的架构设计,受分布式技术的影响,很多有自己特色的地方,但是在概念模型和逻辑模型设计方面,还是有很多可以从传统数据仓库模型进行借鉴的地方.NCR FS-LDM数据模型是金融行 ...
- 我的ehcache笔记
我的EhcacheUtils类: package com.shinho.bi.utils; import org.ehcache.CacheManager; import org.ehcache.co ...
- 【异常处理】Springboot对Controller层方法进行统一异常处理
Controller层方法,进行统一异常处理 提供两种不同的方案,如下: 方案1:使用 @@ControllerAdvice (或@RestControllerAdvice), @ExceptionH ...
- a message box to confirm the action
当点击窗口的X按钮时,弹出确认退出消息框,继续点击Yes,退出.否则,窗口继续处于打开状态 代码: """ This program shows a confirmati ...
- 【转】十年你能做的能得到的有多少?一个工科IT男的工作回忆
https://blog.csdn.net/b5w2p0/article/details/8798989
- [UE4]区分敌我
第一方法是:使用Actor对象的Tag: 只要继承自Actor的对象,都会有Tags这个属性,这是一个数组,可以添加多个Tag. 在蓝图中可以使用“get Components by Tag”获得某个 ...
- hadoop ha环境下的datanode启动报错java.lang.NumberFormatException: For input string: "10m"
hadoop ha环境启动start-dfs.sh的时候datanode启动不了,并且报错. [hadoop@datanode2 ~]$ cat /home/hadoop/hadoop-2.7.3/l ...
- plsql怎么执行sql脚本
首先,我们需要登录需要执行sql文件的用户,在我们确保sql文件无误的情况下,进入plsqldeveloper: 1,找到tools--->import tables --->选择sql ...