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; 不知道如何写 ...
随机推荐
- java实例检查端口是否被占用
127.0.0.1代表本机 主要的原理是:Socket socket = new Socket(Address,port);#address代表主机的IP地址,port代表端口号 如果对该主机的特定端 ...
- 自动化测试Java一:Selenium入门
From: https://blog.csdn.net/u013258415/article/details/77750214 Selenium入门 欢迎阅读Selenium入门讲义,本讲义将会重点介 ...
- SpringMVC拦截器配置
1.首先在springmvc.xml中添加配置 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path=" ...
- windows cmd下ssh连接免密码问题解决
windows 7 cmd下 ssh -T username@serverip 免密码连接成功 有的同学在windows下开发,并且在windows下安装了git for windows,这些资源已经 ...
- Qt QDateTime QTimer的简单实用
转载:N3verL4nd qttimer.h #ifndef QTTIMER_H #define QTTIMER_H #include <QDialog> namespace Ui { c ...
- hadoop本地运行模式调试
一:简介 最近学习hadoop本地运行模式,在运行期间遇到一些问题,记录下来备用:以运行hadoop下wordcount为例子. hadoop程序是在集群运行还是在本地运行取决于下面两个参数的设置,第 ...
- [UE4]自定义服务器Service
- docker设置容器固定ip
docker安装后,默认会创建三种网络类型,bridge.host和none,可通过如下命令查看 sudo docker network ls 1 bridge:网络桥接 默认情况下启动.创建容器都是 ...
- POJ Lost Cows
[题解] 参考https://blog.csdn.net/acmer_hades/article/details/46272605.设置数组pre_smaller,其中第i个元素即为输入的第i项,则显 ...
- vs code编辑器格式化react jsx插件
vs code格式化jsx比较适合的插件是react-beautify: 格式化中遇到的问题是indent几格,这个问题的解决是你在space里设置几格这个插件就会自动格式化出几格.