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; 不知道如何写 ...
随机推荐
- 坑人的 Javascript 模块化编程 require.js
坑人的 Javascript 模块化编程 require.js
- JAVA常量与变量
顺着箭头的转换为自动转换逆这箭头的转换为强制转换. 常量 关键字FINAL 命名为大写 标识符 1要以字母数字下划线和¥组成 2首字母不能为数字 3不能是JAVA的关键字和 保留字 4数据类型分为基本 ...
- IIS短文件名泄露漏洞检测
http://www.xxxx.com/*~1****/a.aspx http://www.xxxx.com/l1j1e*~1****/a.aspx If the first one return a ...
- g6 cavans
{ // 默认模式 default: [ 'dragNode', 'dragEdge', 'dragBlank', 'clickBlankClearActive', 'resizeEdge', 'cl ...
- [蓝桥杯]ALGO-90.算法训练_出现次数最多的整数
问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两 ...
- Hadoop概念学习系列之Hadoop、Spark学习路线(很值得推荐)(十八)
不多说,直接上干货! 说在前面的话 此笔,对于仅对于Hadoop和Spark初中学者.高手请忽略! 1 Java基础: 视频方面: 推荐<毕向东JAVA基础视频教程>.学 ...
- Java学习——this、this()、super 和 super()的使用
编写程序:说明 this.super 和 super()的用法.程序首先定义 Point(点)类,然后创建点的子类 Line(线)),最后通过 LX7_3 类输出线段的长度. package Pack ...
- eclipse安装、汉化、搭建安卓开发环境
1.eclipse与jdk的位数(32bit or 64bit )要对应,否则会提示Failed to load JNI shared library.提示这一种错误据说还有另外一种原因就是Path路 ...
- [UE4]加入音效
- [UE4]Actor的Destroyed事件