A16_Linq查询表达式
来源:互联网 发布:大数据平台发展趋势 编辑:程序博客网 时间:2024/06/05 08:32
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{ public class Employee { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } public int Levelnum { get; set; } public Employee(int id, string name, int age, int levelnum) { ID = id; Name = name; Age = age; Levelnum = levelnum; } public override string ToString() { return string.Format("ID = {0} Name = {1} Age = {2} Levelnum = {3}", ID, Name, Age, Levelnum); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{ public class EmpLevel { public int ID { get; set; } public int LevelNum { get; set; } public string LevelName { get; set; } public float Salary { get; set; } public EmpLevel(int id, int levelnum, string levelname, float salary) { ID = id; LevelNum = levelnum; LevelName = levelname; Salary = salary; } public override string ToString() { return string.Format("ID = {0} LevelNum = {1} LevelName = {2} Salary = {3}", ID, LevelNum, LevelName, Salary); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{ class Demo1 { List<Employee> empArray = new List<Employee>(); List<EmpLevel> empLeArray = new List<EmpLevel>(); List<Employee> empQueryArray = new List<Employee>(); public Demo1() { empLeArray = new List<EmpLevel>(); empArray = new List<Employee>(); empQueryArray = new List<Employee>(); //集合信息,初始化数据(雇员信息) empArray.Add(new Employee(1, "姜 文", 40, 4)); empArray.Add(new Employee(2, "冯小刚", 50, 5)); empArray.Add(new Employee(3, "张艺谋", 60, 6)); empArray.Add(new Employee(4, "王宝强", 35, 3)); empArray.Add(new Employee(5, "范冰冰", 30, 3)); empArray.Add(new Employee(6, "李冰冰", 29, 2)); empArray.Add(new Employee(7, "李一凡", 20, 1)); //初始化雇员级别信息 empLeArray.Add(new EmpLevel(1, 1, "T1-1", 5000F)); empLeArray.Add(new EmpLevel(2, 2, "T1-2", 8000F)); empLeArray.Add(new EmpLevel(3, 3, "T1-3", 10000F)); empLeArray.Add(new EmpLevel(4, 4, "T2-1", 15000F)); empLeArray.Add(new EmpLevel(5, 5, "T2-2", 20000F)); empLeArray.Add(new EmpLevel(6, 6, "T3-1", 30000F)); } //传统查询:查询Level级别大于2的所有公司雇员 public void Test1() { foreach (Employee emp in empArray) { if (emp.Levelnum > 2) { empQueryArray.Add(emp); } } foreach (Employee emp in empQueryArray) { Console.WriteLine(emp.ToString()); } } //使用Linq进行查询Level级别大于2的所有公司雇员 public void Test2() { var result = from m in empArray where m.Levelnum > 2 && m.Age >= 50 select m; foreach (var item in result) { Console.WriteLine(item.ToString()); } } static void Main1(string[] args) { Demo1 obj = new Demo1(); //obj.Test1(); obj.Test2(); } }}
//C#扩展方法:给已经定义好的类,添加新的方法//只有静态类才能添加扩展方法//扩展方法必须是静态的using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{ static class Demo3 { public static void Test1() { string str = "Hello Everyone"; string strResult = str.TestMethod(); string strResult2 = str.TestMethod("hahaha"); Console.WriteLine(strResult); Console.WriteLine(strResult2); } //无参扩展方法 public static string TestMethod(this string name) { return name + "Good morning"; } //有一个参数的扩展方法 public static string TestMethod(this string name, string para) { return name + "Good morning" + para; } static void Main1(string[] args) { Demo3.Test1(); } }}
//Linq的扩展方法using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace A16_LinqQueryExpression{ class Demo4 { List<Employee> empArray = new List<Employee>(); List<EmpLevel> empLeArray = new List<EmpLevel>(); List<Employee> empQueryArray = new List<Employee>(); public Demo4() { empLeArray = new List<EmpLevel>(); empArray = new List<Employee>(); empQueryArray = new List<Employee>(); //集合信息,初始化数据(雇员信息) empArray.Add(new Employee(1, "姜 文", 40, 3)); empArray.Add(new Employee(2, "冯小刚", 50, 5)); empArray.Add(new Employee(3, "张艺谋", 60, 6)); empArray.Add(new Employee(4, "王宝强", 35, 3)); empArray.Add(new Employee(5, "范冰冰", 30, 3)); empArray.Add(new Employee(6, "李冰冰", 29, 2)); empArray.Add(new Employee(7, "李一凡", 20, 2)); //初始化雇员级别信息 empLeArray.Add(new EmpLevel(1, 1, "T1-1", 5000F)); empLeArray.Add(new EmpLevel(2, 2, "T1-2", 8000F)); empLeArray.Add(new EmpLevel(3, 3, "T1-3", 10000F)); empLeArray.Add(new EmpLevel(4, 4, "T2-1", 15000F)); empLeArray.Add(new EmpLevel(5, 5, "T2-2", 20000F)); empLeArray.Add(new EmpLevel(6, 6, "T3-1", 30000F)); } //使用Linq的扩展方法,查询等级大于2的雇员信息 public void Test1() { //使用扩展方法1 //var result = empArray.Where(FilterConditionMethod); //使用扩展方法2 lambda表达式 var result = empArray.Where(a => a.Levelnum > 2); foreach (var item in result) { Console.WriteLine(item.ToString()); } } /* private bool FilterConditionMethod(Employee emp) { if (emp.Levelnum > 2) { return true; } else { return false; } } */ //联合查询 查询两个集合的并集 public void Test2() { /* var queryResult = from e in empArray from l in empLeArray select new { e, l }; //输出两个集合的并集 */ //查询出所有大于3级的信息 /* var queryResult = from e in empArray from l in empLeArray where e.Levelnum == l.LevelNum && e.Levelnum > 3 select new { e, l }; //输出两个集合的并集 */ //输出所有大于三级的雇员姓名、级别、工资 var queryResult = from e in empArray from l in empLeArray where e.Levelnum == l.LevelNum && e.Levelnum > 3 select new { e.Name, l.LevelName, l.Salary }; //输出两个集合的并集 foreach (var item in queryResult) { //Console.WriteLine(item.ToString()); Console.WriteLine("姓名 = {0} 级别 = {1} 工资 = {2}",item.Name, item.LevelName, item.Salary); } } //排序 public void Test3() { //输出所有大于1级的雇员姓名、级别、工资 且根据姓名,级别和年龄进行排序 var queryResult = from e in empArray from l in empLeArray where e.Levelnum == l.LevelNum && e.Levelnum > 1 orderby e.Levelnum, e.Name, e.Age //descending 降序关键字 //排序语句 select new { e.Name, l.LevelName, l.Salary }; //输出两个集合的并集 foreach (var item in queryResult) { //Console.WriteLine(item.ToString()); Console.WriteLine("姓名 = {0} 级别 = {1} 工资 = {2}",item.Name, item.LevelName, item.Salary); } } //Join On关键字 联合查询 public void Test4() { var queryResult = from e in empArray join l in empLeArray on e.Levelnum equals l.LevelNum where e.Levelnum > 2 && l.Salary > 20000 select new {e,l}; foreach (var item in queryResult) { Console.WriteLine("名称 = "+item.e.Name + " " + "级别 = " + item.l.LevelName); } } //Group by 分组关键字 public void Test5() { //查询雇员集合中,按照级别分组,统计每个级别有多少人 var queryResult = from e in empArray group e by e.Levelnum into g //分组结果为g select new { g.Key, counts = g.Count() }; foreach (var item in queryResult) { Console.WriteLine("级别:"+item.Key+" "+"数量:"+item.counts); } } //any关键字:至少有一个符合条件 //all关键字:全都满足条件 public void Test6() { bool boolResult = empArray.Any(m => m.Name == "王宝强"); Console.WriteLine("是否有一个或以上个员工叫“王宝强”:" + boolResult); } public void Test7() { bool boolResult = empArray.All(m => m.Name == "王宝强"); Console.WriteLine("是否有所有员工都叫“王宝强”:" + boolResult); } static void Main(string[] args) { Demo4 obj = new Demo4(); //obj.Test1(); //obj.Test2(); //obj.Test3(); //obj.Test5(); obj.Test6(); obj.Test7(); } }}
阅读全文
0 0
- A16_Linq查询表达式
- 表达式查询
- 查询表达式
- 子查询和查询表达式
- 查询表达式解析
- 查询表达式(LINQ)简介
- lucene-查询表达式加权
- mysql 正则表达式查询
- 查询表达式(LINQ)简介
- LINQ 查询表达式
- 查询表达式基础知识
- 查询表达式(LINQ)简介
- LINQ 查询表达式学习
- Criteria查询表达式:
- 查询表达式Linq
- 查询表达式(LINQ)简介
- 查询表达式(LINQ)简介
- c#的查询表达式
- 18B
- bzsc
- 个人总结62
- 《SSO系列专题》之 大型互联网应用基于CAS的SSO架构
- Unity OC String传递需要注意的地方
- A16_Linq查询表达式
- NOIP2017
- 运用tensorflow改写《机器学习与实战》一书中的手写识别系统
- set get 方法
- 理解 Android Activity 的启动模式
- git版本控制管理系列-----第一章 介绍GIT
- 基于用户的协同过滤算法的系统多样性分析
- git版本控制管理系列-----第二章 安装GIT
- GCC基础知识学习-1