1.需要一个数据源类:

  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Linq
  5. {
  6. public class Student
  7. {
  8. public int Id { get; set; }
  9. public string Name { get; set; }
  10. public int Age { get; set; }
  11. }
  12.  
  13. public class Data
  14. {
  15. public static List<Student> studentList = new List<Student>()
  16. {
  17. new Student()
  18. { Name="李四",
  19. Age=
  20. },
  21. new Student()
  22. {
  23. Name="张三",
  24. Age=
  25. }
  26. };
  27.  
  28. }
  29. }

2.主函数调用类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Linq
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. LinqTest lin = new LinqTest();
  14. lin.Show();
  15. }
  16. }
  17. }

3.查询方法(重点介绍的)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Linq
  8. {
  9. public class LinqTest
  10. {
  11. public void Show()
  12. {
  13. List<Student> studentList = new List<Student>();//
  14. Console.WriteLine("-----------------foreach方式(1)---------");
  15.  
  16. foreach (Student item in Data.studentList) ////Data.studentList是数据源
  17. {
  18. if (item.Age > )
  19. {
  20. studentList.Add(item);//将数据源中满足要求的数据填充到指定容器中
  21. }
  22. }
  23.  
  24. //studentList中以填充数据
  25. foreach (Student item in studentList)
  26. {
  27. Console.WriteLine("foreach方式:Name={0},Age={1}", item.Name, item.Age);
  28. }
  29.  
  30. Console.WriteLine("-----------linq方式(2)-------------");
  31. var linq = from s in Data.studentList where s.Age > select s;
  32. foreach (var item in linq)
  33. {
  34. Console.WriteLine("linq方式:Name={0},Age={1}", item.Name, item.Age);
  35. }
  36.  
  37. Console.WriteLine("-----------lambda方式(3)-------------");
  38. // var lambda = Data.studentList.Where(s => s.Age > 18); where可以自动推断类型 扩展方法
  39. var lambda = Data.studentList.Where<Student>(s => s.Age > );
  40. foreach (var item in lambda)
  41. {
  42. Console.WriteLine("lambda方式:Name={0},Age={1}", item.Name, item.Age);
  43. }
  44.  
  45. Console.WriteLine("-------Enumerable静态类方式(4)-----------");
  46. var enm= Enumerable.Where(Data.studentList, s => s.Age > );
  47. foreach (var item in enm)
  48. {
  49. Console.WriteLine("Enumerable静态类方式:Name={0},Age={1}", item.Name, item.Age);
  50. }
  51. }
  52.  
  53. }
  54. }

(3.1)对where扩展方法的理解即学习

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Linq
  8. {
  9. public class LinqTest
  10. {
  11. public void Show()
  12. {
  13. Console.WriteLine("-----------lambda方式(3.1)where扩展-------------");
  14. var linqExtend = Data.studentList.WhereExtend(s => s.Age > ); //where可以自动推断类型 扩展方法
  15.  
  16. foreach (var item in linqExtend)
  17. {
  18. Console.WriteLine("lambda方式(3.1)where扩展:Name={0},Age={1}", item.Name, item.Age);
  19. }
  20. }
  21. }
  22. /// <summary>
  23. /// where的扩展方法
  24. /// </summary>
  25. public static class LinqExtend
  26. {
  27. public static IEnumerable<T> WhereExtend<T>(this IEnumerable<T> tList,Func<T,bool> func) where T : Student// func:用于测试每个元素是否满足条件的函数。
  28. {
  29. var Linq = from s in tList where func(s) select s;
  30. return Linq;
  31. }
  32.  
  33. }
  34. }

几种查询方法(lambda Linq Enumerable静态类方式)的更多相关文章

  1. ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板)

    ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板) 题意 题意:给一个n,代表n次操作,接下来每次操作表示把[l,r]区间的线段涂成k的颜色其中,l,r,k的范围都是0到8000 这 ...

  2. MVC EF两种查询方法

    @*@model IQueryable<EFExam.Models.Product>*@@model IQueryable<EFExam.Models.ProductViewMode ...

  3. springdata-jpa 八种查询方法

    使用:maven+Spring+jpa+Junit4 查询方式:SQL,JPQL查询,Specification多条件复杂查询 返回类型:list<POJO>,list<Stinrg ...

  4. Form Builder的三种查询方法构建

    1.使用DEFAULT_WHERE: DECLARE   V_DEFAULT_WHERE VARCHAR2(32767);  V_WHERE         VARCHAR2(32767); BEGI ...

  5. [moka同学笔记]YII2.0 判断签约状态,sql的两种查询方法

    方法一: //判断签约状态 $signed = 0; $sql="SELECT * from usho_community_sign_record WHERE com_id=$r->i ...

  6. Form表单中的三种查询方法

    1.使用:parameter.G_query_find参数: IF (NAME_IN('PO_HEADERS.PO_HEADER_ID') IS NOT NULL) THEN    :paramete ...

  7. Entity Framework入门教程(7)--- EF中的查询方法

    这里主要介绍两种查询方法 Linq to entity(L2E)和Sql 1.L2E查询 L2E查询时可以使用linq query语法,或者lambda表达式,默认返回的类型是IQueryable,( ...

  8. Dynamic CRM 2015学习笔记(3)oData 查询方法及GUID值比较

    本文将比较二种查询字符串在同一个oData查询方法中的不同,另外,还将介绍如何比较不同方法返回的GUID的值. 用同一个oData查询方法,如果传入查询的字符串不一样,返回结果的格式竟然完全不一样. ...

  9. 让LINQ中的查询语法使用自定义的查询方法

    使用LINQ时有两种查询语法:查询语法和方法语法 查询语法:一种类似 SQL 语法的查询方式 方法语法:通过扩展方法和Lambda表达式来创建查询 例如: List<, , , }; //查询语 ...

随机推荐

  1. SNMP:使用net-snmp捕捉trap

    管理端:172.18.0.135  win7系统     代理端:172.18.0.212    Debian7.2 前提:代理端已配置snmp,可正常实现用SNMP协议实现系统信息监控 1.管理端下 ...

  2. spring boot 使用velocity模板(十六)

    (不要使用这种模板了,spring boot最新版已经不支持了.使用FreeMarker吧:http://blog.csdn.net/clementad/article/details/5194262 ...

  3. vue.js-列表分页

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 纪念又一次ak

    t1网络流 随便建个图就可以了 t2单调队列 分成两组来做 t3dp+高精度 为了不被卡厂用了万进制

  5. JDK1.7+eclipse 4.4(luna)+pydev4.4.5构建django开发环境

    最近一直用pycharm搞django学习,但是到2017年随着版本的不断更新,启动之慢,吃资源吃内存越来越严重.果然想找一个IDE替代品. 之前用java开发分布式WEB应用,用eclipse开了N ...

  6. eclipes常用快捷键

    Eclipes快捷键 alt + / 代码补全,自动提示 ctrl + o 显示类中的方法属性,再按一次ctrl + o,显示更多的变量 ctrl + d 删除当前行 ctrl + / 单行注释或者选 ...

  7. Qt Creator 模块QtSql

    在新建Qt Gui Application时,没有弹出模块选择页, 可以手动在pro文件中增加. 比如要选中QtSql模块,(目前我没有找到哪里可以修改要选中的模块), 我是手动在pro文件中增加了一 ...

  8. Java方向如何准备BAT技术面试答案(汇总版)

    这个主题的内容之前分三个篇幅分享过,导致网络上传播的比较分散,所以本篇做了一个汇总,同时对部分内容及答案做了修改,欢迎朋友们吐槽.转发.因为篇幅长度和时间的原因,部分答案我没有亲自总结.更多精彩内容请 ...

  9. opencrud graphql 数据操作指南

    opencrud 是社区团队提出,同时prisma框架就是按照这个标准设计的,里面包含了对于graphql 数据 操作的最佳实践,目前还在完善中,但是设计以及指南覆盖的功能还是比较全的,如果用过 pr ...

  10. ballerina 学习十七 多线程编程

    并发&&多线程开发对于日常的处理是比较重要的,ballerina 支持的模式有work fork/join async lock 基本workers 参考代码 import balle ...