zoukankan      html  css  js  c++  java
  • LinQ 简介

    LinQ是3.0新加的语法。用起来比较方便,我们可以使用较简单的方法来过滤数据和处理数据。

    使用场景: 可以看到LINQ使用场景还是很多的。现在写项目基本都会用到。

    在出现委托之前,我们来查找对象

    在C#2.0之前,我们必须使用“foreach”或“for”循环来遍历集合来查找特定的对象例如,我们必须编写下面的代码来查找年龄在12岁到20岁之间(13到19岁的学生)的所有学生对象:

    使用委托在C#2.0中查找集合中的元素

    从C#3.0开始:

     

     相比上面而言简单了很多,这就是LINQ带来的便捷。

    LINQ的优点:

    • 熟悉的语言:开发人员不必为每种类型的数据源或数据格式学习新的查询语言。
    • 编码较少:与传统方法相比,它减少了要编写的代码量。
    • 可读代码: LINQ使代码更易读,所以其他开发人员可以轻松理解和维护代码。
    • 查询多个数据源的标准化方式:可以使用相同的LINQ语法来查询多个数据源。
    • 编译查询的时间安全性:在编译时提供对象的类型检查。
    • 智能感知支持: LINQ为通用集合提供智能感知。
    • 整形数据:您可以检索不同形状的数据。
     

    LINQ API

     LINQ只不过是实现IEnumerable和IQueryable接口的类的扩展方法的集合。System.Linq命名空间包含LINQ必需的类和接口。EnumerableQueryable是包含扩展方法的两个主要的LINQ API静态类。

    枚举:

    枚举类包含实现IEnumerable <T>接口的类的扩展方法,这包括System.Collections.Generic名称空间中的所有集合类型,如List <T>,Dictionary <T>,SortedList <T>,Queue <T> ,HashSet <T>,LinkedList <T>等

     

    可查询:

    可查询类包括用于实现类的扩展方法的IQueryable <T>接口。IQueryable <T>用于针对数据类型已知的特定数据源提供查询功能例如,实体框架api实现IQueryable <T>接口来支持像SQL Server这样的底层数据库的LINQ查询。

    所以对于继承IEnumerable&Queryable的数据都可以使用LINQ。

    要记住的要点:

    1. 使用System.Linq命名空间来使用LINQ。
    2. LINQ api包含两个主要的静态类EnumerableQueryable
    3. 静态Enumerable类包含实现IEnumerable <T>接口的类的扩展方法。
    4. IEnumerable <T>类型的集合是内存中的集合,如List,Dictionary,SortedList,Queue,HashSet,LinkedList
    5. 静态Queryable类包含实现IQueryable <T>接口的类的扩展方法
    6. 远程查询提供程序实现IQueryable <T>。例如。Linq to SQL,LINQ to DataSet,LINQ to XML,LINQ to Eneity等

     

    LINQ查询语法

    向IEnumerable集合或IQueryable数据源写入LINQ查询有两种基本方法。

    1. 查询语法或查询表达式语法
    2. 方法语法或方法扩展语法或Fluent

    查询语法:

    要记住的要点:

    1. 如名称所示,查询语法与SQL(结构查询语言)语法相同。
    2. 查询语法以from子句开始,可以以SelectGroupBy子句结束
    3. 使用过滤,加入,分组,排序操作符等各种其他opertors来构建所需的结果。
    4. 隐式类型变量 - var可以用来保存LINQ查询的结果。

    LINQ方法语法与Lambda表达式

    方法语法(也称为流利语法)使用EnumerableQueryable静态类中包含的扩展方法,类似于您将如何调用任何类的扩展方法。

     方法语法一般都会配合Lambda表达式进行条件过滤 

    要记住的要点:

    1. Lambda表达式是表示匿名方法的一种较短的方式。
    2. Lambda表达式语法: parameters => body expression
    3. Lambda表达式可以有零参数。
    4. Lambda Expression可以在括号()中有多个参数。
    5. Lambda Expression可以在大括号{}中的正文表达式中包含多个语句
    6. 可以将Lambda表达式分配给Func,Action或Predicate委托。
    7. Lambda表达式可以以与委托类似的方式调用。
  • 相关阅读:
    memcached 常用命令最全总结大全
    windows下,java环境变量的设置,设置点击startup.bat启动tomcat
    初步认识消息中间件
    构建自己的Java并发模型框架
    初步理解socket
    Intel Realsense D435 在ROS:Kinetic + Ubuntu16.04中安装使用
    0% [Connecting to security.ubuntu.com (2001:67c:1560:8001::14)]
    realsense D435安装时出现Invoking "cmake" failed,not found ddynamic_reconfigure etc.
    [Halcon] 算子学习_Calibration_Calibration Object
    [Halcon] 使用Halcon生成圆点型标定板
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/7928231.html
Copyright © 2011-2022 走看看