zoukankan      html  css  js  c++  java
  • Unity3D C#中使用LINQ查询(与 SQL的区别)

    前言:

    学过SQL的一看就懂

    LINQ代码很直观

    但是,LINQ却又跟SQL完全不同

    首先来看一下调用LINQ的代码

    int[] badgers = {36,5,91,3,41,69,8};
    
    var skunks = 
    
      from pigeon in badgers
    
      where (pigeon != 36 && pigeon <50)
    
      orderby pigeon descending
    
      select pigeon + 5;
    
    var bears = skunks.Take(3);
    
    Debug.Log("Get your kicks on route {0}",weasels.Sum());

    LINQ与SQL最大的不同

    就在于SQL查询的是数据库表,而LINQ查询的是对象

    也就是说,SQL查询的是集合,而LINQ查询的是可以储存的任何内容,可以是值、struct、对象等。

    这就形成了最大的区别:SQL表没有顺序,而LINQ查询的内容是有顺序的

    从代码行的不同

    SQL语句把SELECT放在第一句

    而LINQ将SELECT放在了最后一句

    两者同样具有where,orderby等语句

    LINQ并不只是查询并获取数据项

    LINQ还提供了管理数据所需要的各种工具

    例如上面代码的 select pigeon + 5;

    作用为将每个数字加5后输出

    类似地,还有LINQ定义的一些方法,如Count(),Min(),Max(),Sum(),Average()等

    LINQ是什么原理呢

    首先,需要循环处理整个对象

    然后,将每个值与where条件作比较

    最后,收集结果储存在代码中以供使用

    因此LINQ代码的优缺点一目了然:

    优点:C#把大量行为压缩到几行代码中,可以用很少的代码完成复杂的工作

    缺点:性能相对不高。for手写代码比用LINQ代码速度快十几倍(网友测试结论)

    注意:

    LINQ查询会有“延迟计算”

    也就是说,访问LINQ查询的结果之前并不会真正运行LINQ查询

    这算是一种性能机制

    当然,也可以使用ToList()告诉LINQ立即执行查询

  • 相关阅读:
    #include <functional>
    3.3内联函数
    如何查看内存占用和运行速度
    属性和方法的动态绑定和限制
    __slots__节约空间
    函数进阶之一等对象
    python继承之super
    python的方法VSjava方法
    python面向对象基础(三)内置方法 __xx__
    python面向对象基础(二)反射
  • 原文地址:https://www.cnblogs.com/fws94/p/6693535.html
Copyright © 2011-2022 走看看