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; 不知道如何写 ...
随机推荐
- 解决“chrome adobe flash player不是最新版本”的方法
chrome地址栏输入chrome://components 更新flash后,重启chrome即可,可能需要搭梯子才能更新.
- CAD求交点函数
public void IntersectWith( Entity entityPointer, Intersect intersectType, Point3dCollection points, ...
- 53题看透java线程
1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...
- Android adb logcat输出日志显示不全解决方案
在终端中使用adb logcat打印服务器json数据,如果返回数据过大超过4000字节(4K)即会截断不显示 原因:logcat在对于message的内存分配大概是4k左右.所以超过的内容都直接被丢 ...
- vue聊天功能之滚动条自动定位到底部
一.问题描述 首次进入聊天窗口,数据加载之后先显示最早消息,后显示最新消息,也就是数据加载完之后,延迟了一个时间滚动条才自动定位到最底部. 二.解决方案 如果数据在刚好加载完的时候滚动条就定位到了最底 ...
- python-selenium 并发执行用例的问题
看了虫师的多进程执行测试用例一直都执行错误,最后解决了 解决方法如下: 使用threading模块 import threading 使用threading.Thread的方法 ,执行用例成功
- 用sqoop将mysql的数据导入到hive表
一.先将mysql一张表的数据用sqoop导入到hdfs 1.1.先在mysql中准备一张测试用的表 mysql> desc user_info; +-----------+---------- ...
- jQuery :has() 选择器
实例 1.选取所有包含有 <span> 元素在其内的 <p> 元素: $("p:has(span)") 2. <!DOCTYPE html ...
- [转][C#]Web.config 相关配置
设置默认首页 <?xml version="1.0" encoding="UTF-8"?> <configuration> <sy ...
- [UE4]Uniform Grid Panel
Uniform Grid Panel:统一大小网格 一.如果不设置子控件的Row和Column值,就跟Overlay容器一样的重叠. 二.选中Uniform Grid Panel,可以设置其内的子控件 ...