首先定义几个模型类:  

  1. /// <summary>
  2. /// 员工类
  3. /// </summary>
  4. public class Employee
  5. {
  6. /// <summary>
  7. /// 员工id
  8. /// </summary>
  9. public int Empid { get; set; }
  10. /// <summary>
  11. /// 部门id
  12. /// </summary>
  13. public int DeptId { get; set; }
  14. /// <summary>
  15. /// 员工姓名
  16. /// </summary>
  17. public string EmpName { get; set; }
  18. /// <summary>
  19. /// 员工编号
  20. /// </summary>
  21. public string EmpCode { get; set; }
  22. }
  23. /// <summary>
  24. /// 部门模型
  25. /// </summary>
  26. public class DeptModel
  27. {
  28. /// <summary>
  29. /// 部门id
  30. /// </summary>
  31. public int DeptId { get; set; }
  32. /// <summary>
  33. /// 部门名称
  34. /// </summary>
  35. public string DeptName { get; set; }
  36. }

组装数据:

  1.      /// <summary>
  2. /// 员工数据
  3. /// </summary>
  4. private static List<Employee> Emp = new List<Employee>()
  5. {
  6. new Employee {Empid=,DeptId=,EmpName="王芳",EmpCode="" },
  7. new Employee {Empid=,DeptId=,EmpName="韩丽",EmpCode="" },
  8. new Employee {Empid=,DeptId=,EmpName="李飞",EmpCode="" },
  9. new Employee {Empid=,DeptId=,EmpName="李丽",EmpCode="" },
  10. new Employee {Empid=,DeptId=,EmpName="王二麻",EmpCode="" },
  11. new Employee {Empid=,DeptId=,EmpName="刘慧",EmpCode="" },
  12. new Employee {Empid=,DeptId=,EmpName="张飞",EmpCode="" },
  13. new Employee {Empid=,DeptId=,EmpName="测试人员",EmpCode="" },
  14. };
  15. /// <summary>
  16. /// 部门数据
  17. /// </summary>
  18. private static List<DeptModel> Dept = new List<DeptModel>()
  19. {
  20. new DeptModel {DeptId=,DeptName="产品部" },
  21. new DeptModel {DeptId=,DeptName="管理层" },
  22. new DeptModel {DeptId=,DeptName="人事部" },
  23. new DeptModel {DeptId=,DeptName="研发部" },
  24. new DeptModel {DeptId=,DeptName="项目部" },
  25. new DeptModel {DeptId=,DeptName="市场部" },
  26. new DeptModel {DeptId=,DeptName="测试部门" },
  27. };

1、内连接(join)查询

  1.        //Lambda写法
  2. var data = Emp.Join(Dept, e => e.DeptId, d => d.DeptId, (e, d) => new { e, d }).ToList();
  3. //Linq写法
  4. var data2 = (from e in Emp
  5. join d in Dept
  6. on e.DeptId equals d.DeptId
  7. select new { e, d }).ToList();

2、左(left join )连接查询

  1.        //Linq写法
  2. var data3 = (from e in Emp
  3. join d in Dept
  4. on e.DeptId equals d.DeptId into list
  5. from dept in list
  6. select new { e, dept }).ToList();
  7. //Lambda写法
  8. var data4 = Emp.GroupJoin(Dept, e => e.DeptId, d => d.DeptId, (e, d) => new { e, d = d.FirstOrDefault() }).ToList();

3、交叉(Corss join)连接

  1.        //Linq写法
  2. var data5 = (from e in Emp
  3. from d in Dept
  4. select new { e, d }).ToList();
  5. //Lambda写法
  6. var data6 = Emp.SelectMany(emp => Dept.Select(dept => new { emp, dept })).ToList();

Lambda

  1. Func<int, string> fun = (int a) => { return "返回值" + a; };
  2. Func<int, string> fun2 = delegate (int a) { return "返回值" + a; };
  3.  
  4. Action action = () => { Console.WriteLine("返回值1"); };
  5. Action action2 = delegate () { Console.WriteLine("返回值2"); };
  6.  
  7. Predicate<int> predicate = delegate (int a) { return a > ; };
  8. Predicate<int> predicate3 = (int a) => { return a > ; };

Linq的常见查询的更多相关文章

  1. Linq之常见关键字

    目录 写在前面 系列文章 常见关键字 总结 写在前面 前面的几篇文章算是对linq的铺垫,从本篇开始将进行linq的语法及实践. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda ...

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

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

  3. LINQ to Entities 查询语法

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

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

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

  5. LINQ to Entities 查询注意事项

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

  6. 高性能MySql进化论(十一):常见查询语句的优化

    总结一下常见查询语句的优化方式 1        COUNT 1.       COUNT的作用 ·        COUNT(table.filed)统计的该字段非空值的记录行数 ·         ...

  7. xBIM 使用Linq 来优化查询

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

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

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

  9. linq not in 查询

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

随机推荐

  1. 黄聪:HBuilder左侧项目管理器如何不与标签页一起自动切换

    把这个按钮取消就好了

  2. php源码安装常用配置参数和说明

    常用的配置参数1. --prefix=/usr/local/php 指定 php 安装目录 install architecture-independent files in PREFIX 默认/us ...

  3. 数据仓库专题(5)-如何构建主题域模型原则之站在巨人的肩上(二)NCR FS-LDM主题域模型划分

    一.前言 分布式数据仓库模型的架构设计,受分布式技术的影响,很多有自己特色的地方,但是在概念模型和逻辑模型设计方面,还是有很多可以从传统数据仓库模型进行借鉴的地方.NCR FS-LDM数据模型是金融行 ...

  4. 我的ehcache笔记

    我的EhcacheUtils类: package com.shinho.bi.utils; import org.ehcache.CacheManager; import org.ehcache.co ...

  5. 【异常处理】Springboot对Controller层方法进行统一异常处理

    Controller层方法,进行统一异常处理 提供两种不同的方案,如下: 方案1:使用 @@ControllerAdvice (或@RestControllerAdvice), @ExceptionH ...

  6. a message box to confirm the action

    当点击窗口的X按钮时,弹出确认退出消息框,继续点击Yes,退出.否则,窗口继续处于打开状态 代码: """ This program shows a confirmati ...

  7. 【转】十年你能做的能得到的有多少?一个工科IT男的工作回忆

    https://blog.csdn.net/b5w2p0/article/details/8798989

  8. [UE4]区分敌我

    第一方法是:使用Actor对象的Tag: 只要继承自Actor的对象,都会有Tags这个属性,这是一个数组,可以添加多个Tag. 在蓝图中可以使用“get Components by Tag”获得某个 ...

  9. 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 ...

  10. plsql怎么执行sql脚本

    首先,我们需要登录需要执行sql文件的用户,在我们确保sql文件无误的情况下,进入plsqldeveloper: 1,找到tools--->import tables --->选择sql ...