专题二 LINQ和LINQ to Objects
更新时间:2023-03-19 12:45:02 阅读量: 人文社科 文档下载
- 专题二关于长征推荐度:
- 相关推荐
linq
专题二 LINQ和LINQ to Objects
Hands-On实训教程系列
linq
教学目标理解LINQ基本概念 掌握常用标准查询操作符 掌握查询表达式编写方法
Hands-On实训教程系列
linq
工作任务
使用LINQ实现员工管理系统。
Hands-On实训教程系列
linq
创建解决方案
在Visual Studio 2008中新建一个控制台应用 程序,并将项目命名为“ConsoleLINQEmp”。
Hands-On实训教程系列
linq
创建实体类
在默认添加的Program.cs文件中,创建部门 和员工两个实体类public class Department { public int DeptId { set; get; } //部门编号 public string DeptName { set; get; } //部门名称 } public class Employee { public int EmpId { set; get; } //员工编号 public string EmpName { set; get; } //员工姓名 public Department Dept { set; get; } //所属部门 }
Hands-On实训教程系列
linq
创建GenericQuery 类
在Program.cs文件中再添加一个名为 “GenericQuery”的类,先在类中声明两个 List类型的属性,再在构造函数中为这两个属 性赋值,为LINQ查询准备数据源public class GenericQuery { public List<Department> Depts { set; get; } public List<Employee> Emps { set; get; } public GenericQuery() { Department dept1 = new Department { DeptId = 1, DeptName = "资财部" }; Department dept2 = new Department { DeptId = 2, DeptName = "市场部" }; Depts = new List<Department> { dept1, dept2 }; Employee emp1 = new Employee { EmpId = 1002, EmpName = "张三", Dept = dept1 }; Employee emp2 = new Employee { EmpId = 1001, EmpName = "李四", Dept = dept1 }; Employee emp3 = new Employee { EmpId = 2001, EmpName = "王五", Dept = dept2 }; Emps = new List<Employee> { emp1, emp2, emp3 }; } }
Hands-On实训教程系列
linq
GetEmpsByDeptIdNoOrder 方法
在GenericQuery类中添加一个名为 “GetEmpsByDeptIdNoOrder”的方法,根 据部门编号查询出该部门的所有员工信息public IEnumerable<Employee> GetEmpsByDeptIdNoOrder(int deptid) { IEnumerable<Employee> employees = from e in Emps where e.Dept.DeptId == deptid select e; return employees; } IEnumerable<Employee> employees = Emps.Where(e => e.Dept.DeptId == deptid);
Hands-On实训教程系列
linq
GetEmpsByDeptIdOrder 方法
根据部门编号查询该部门的员工信息,但是对 查询结果按照员工编号进行排序public IEnumerable<Employee> GetEmpsByDeptIdOrder(int deptid) { IEnumerable<Employee> employees = from e in Emps where e.Dept.DeptId == deptid orderby e.EmpId select e; return employees; } IEnumerable<Employee> employees = Emps.Where(e => e.Dept.DeptId == deptid).OrderBy(e => e.EmpId); Hands-On实训教程系列
linq
GetEmpsByDeptIdOrderList 方法
将查询的结果转换为存储在缓存中的IList泛型 集合,public IList<Employee> GetEmpsByDeptIdOrderList (int deptid) { IList<Employee> employees = (from e in Emps where e.Dept.DeptId == deptid orderby e.EmpId select e).ToList(); return employees; } IList<Employee> employees =
Emps.Where(e => e.Dept.DeptId == deptid).OrderBy (e => e.EmpId).ToList();
Hands-On实训教程系列
linq
方法调用
在Program类的Main方法内,创建一个 GenericQuery类的实例后分别调用上面创建 的三个方法static void Main(string[] args) { GenericQuery query = new GenericQuery(); IEnumerable<Employee> empsNoOrder = query.GetEmpsByDeptIdNoOrder(1); IEnumerable<Employee> empsOrder = query.GetEmpsByDeptIdOrder(1); IList<Employee> empList = query.GetEmpsByDeptIdOrderList(1); }
Hands-On实训教程系列
linq
输出结果
在Main方法中继续添加代码将查询的结果输 出,以不同的形式显示部门1中的员工信息Console.WriteLine("编号是1的部门包含的员工信息:"); Console.WriteLine("未排序:"); foreach (Employee emp in empsNoOrder) { Console.WriteLine("{0} {1} {2} ", emp.Dept.DeptName, emp.EmpId, emp.EmpName); } Console.WriteLine(); Console.WriteLine("按员工编号排序:"); foreach (Employee emp in empsOrder) { Console.WriteLine("{0} {1} {2} ", emp.Dept.DeptName, emp.EmpId, emp.EmpName); } Console.WriteLine(); Console.WriteLine("按员工编号排序,返回IList:"); foreach (Employee emp in empList) { Console.WriteLine("{0} {1} {2} ", emp.Dept.DeptName, emp.EmpId, emp.EmpName); } Console.WriteLine();
Hands-On实训教程系列
linq
添加员工并重新显示
Main方法的最后编写代码添加一名员工query.Emps.Add(new Employee { EmpId = 1003, EmpName = "马六", Dept = query.Depts[0] });
重新显示部门1中的员工信息Console.WriteLine("添加一名员工后编号是1的部门包含的员工信息:"); Console.WriteLine("未排序:"); foreach (Employee emp in empsNoOrder) { Console.WriteLine("{0} {1} {2} ", emp.Dept.DeptName, emp.EmpId,emp.EmpName); } Console.WriteLine(); Console.WriteLine("按员工编号排序:"); foreach (Employee emp in empsOrder) { Console.WriteLine("{0} {1} {2} ", emp.Dept.DeptName, emp.EmpId,emp.EmpName); } Console.WriteLine(); Console.WriteLine("按员工编号排序,返回IList:"); foreach (Employee emp in empList) { Console.WriteLine("{0} {1} {2} ", emp.Dept.DeptName, emp.EmpId,emp.EmpName); } Console.Read();
Hands-On实训教程系列
linq
启动程序
按F5键启动调试
Hands-On实训教程系列
linq
总结理解LINQ基本概念 掌握常用标准查询操作符 掌握查询表达式编写方法
Hands-On实训教程系列
linq
LINQ介绍LINQ(Language Intergrated Query,语言 集成查询),将一组通用的标准查询运算符集 成到了Visual C#和Visual Basic的语言语法 中,是一系列标准查询操作符的集合。 LINQ是Visual Studio 2008和.NET Framework 3.5版中一项突破性的创新,它在 对象领域和数据领域之间架起了一座桥梁。
Hands-On实训教程系列
linq
LINQ查询操作所有的LINQ查询操作都由以下三个不同的操 作组成: Class Program { static void 获取数据源 Main() { // 1.获取数据源 创建查询 in
t[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 }; // 2. 创建查询 numQuery = 执行查询 IEnumerable<int>(num % 2) == from num in numbers where 0 select num; // 3. 执行查询 foreach (int num in numQuery) { Console.Write("{0} ", num); } } }
Hands-On实训教程系列
linq
LINQ创建查询
“创建查询”,只是创建了一个查询变量,并 为它赋值,它的功能是保存查询语句;真正的 执行要等到第三个操作“执行查询”。
Hands-On实训教程系列
linq
数据源在.NET中,根据数据源的不同,LINQ提供了 以下组件以完成最常用的查询: LINQ to Objects LINQ to XML LINQ to DataSet LINQ to SQL LINQ to Entities
Hands-On实训教程系列
linq
创建查询LINQ中的“查询”指定要从数据源中检索的 信息,并且可以指定在返回这些信息之前如何 对其进行排序、分组和结构化。查询存储在查 询变量中。 可以通过两种语法来创建查询,即使用查询表 达式的查询语法和使用方法的方法语法。
Hands-On实训教程系列
linq
使用查询语法创建查询查询表达式必须以from子句开头,并且必须 以select或group子句结尾。在第一个from子 句和最后一个select或group子句之间,查询 表达式可以包含一个或多个下列可选子句: where、orderby、join、let甚至附加的from var 0 子句。 data=from num in numbers where (num % 2) ==select num; 还可以使用into关键字使join或group子句的 结果能够充当同一查询表达式中附加查询子句 的源。 Hands-On实训教程系列
linq
LINQ to Objects介绍LINQ to Objects的数据源是任意的 IEnumerable或IEnumerable<T>集合,是内 存中的数据集合,LINQ可以直接对这两类数 据源进行查询,而无需使用数据提供程序。 LINQ to Objects中的数据源集合必须实现 IEnumerable<T>或IEnumerable接口。
Hands-On实训教程系列
正在阅读:
程序员数据结构笔记06-29
计算机试题与答案12-20
河豚毒素的药用价值研究报告05-17
学习PowerMarker103-16
我国五大汽车集团竞争力的比较分析03-19
增强我国房地产行业宏观调控效果的对策建06-07
SAP中的容差04-21
经典埋汰人的话02-06
- 粮油储藏基础知识
- 论文范文(包括统一封面和内容的格式)
- 经典解题方法
- 综合部后勤办公用品管理办法+领用表
- 学生宿舍突发事件应急预案
- 16秋浙大《生理学及病理生理学》在线作业
- 四分比丘尼戒本(诵戒专用)
- 浙江财经大学高财题库第一章习题
- 九大员岗位职责(项目经理、技术负责人、施工员、安全员、质检员、资料员、材料员、造价员、机管员)
- 旅游财务管理习题(学生版)
- 德阳外国语高二秋期入学考试题
- 投资学 精要版 第九版 第11章 期权市场
- 控制性详细规划城市设计认识
- bl03海运提单3国际贸易答案
- 2010-2011学年湖北省武汉市武珞路中学七年级(上)期中数学试卷
- VB程序填空改错设计题库全
- 教师心理健康案例分析 - 年轻班主任的心理困惑
- 民间借贷司法解释溯及力是否适用?
- 三联书店推荐的100本好书
- 《化工原理》(第三版)复习思考题及解答
- LINQ
- Objects
- 专题