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立即执行查询
Unity3D C#中使用LINQ查询(与 SQL的区别)的更多相关文章
- 如何在C#中调试LINQ查询
原文:How to Debug LINQ queries in C# 作者:Michael Shpilt 译文:如何在C#中调试LINQ查询 译者:Lamond Lu 在C#中我最喜欢的特性就是LIN ...
- LINQ查询表达式(2) - 在 C# 中编写 LINQ 查询
在 C# 中编写 LINQ 查询 C# 中编写 LINQ 查询的三种方式: 使用查询语法. 使用方法语法. 组合使用查询语法和方法语法. // 查询语法 IEnumerable<int> ...
- Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)
为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...
- 【mybatis】mybatis中放置IN查询拼接sql过长,IN查询进行分批次查询的处理
需要使用的切割list集合的工具类,链接:https://www.cnblogs.com/sxdcgaq8080/p/9376947.html 处理逻辑,原本的一个LIst,进行切割,循环进行myba ...
- ACTION 中 单表查询语句 SQL写法
JSP页面 <tr> <td class="STYLE1"> <div align="center"> // 单击事件 调用 ...
- unity3D脚本中,update ,fixupdate 和lateupdate的区别
1.MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. 2.MonoBehaviour.FixedUpdate 固定更新 当MonoBe ...
- C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...
- Javascript实现Linq查询方式
Linq是.net平台一个重要的技术,全称Language Integrated Query.通过构建快速查询语句,可快速从数据库或集合中筛选数据集.以查询数据库相同的方式操作内存数据. 在ECMAS ...
- 查询拼接SQL语句,多条件模糊查询
多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...
随机推荐
- 自定义checkbox/radio
一. label标签 1. 概念: HTML <label>元素表示用户界面中项目的标题.它通常关联一个控件,或者是将控件放置在label元素内,或者是用作其属性.这样的控制称作label ...
- Mysql删除表格之后,进行恢复
一:存在在PHPmyAdmin下找到表格导出然后再导入 二:当没有备份时,使用binlog功能进行恢复 先进入到/etc/my.cnf文件中. 在文件中添加一句:log-bin=mysql-bin 然 ...
- Error: Cannot find module 'gulp-clone'问题的解决
安装完gulp环境,并且配置好gulpfile.js,执行静态文件压缩和代码混淆时,出现如下错误: Error: Cannot find module 'gulp-clone' Error: Cann ...
- canvas画时钟,重拾乐趣!
canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...
- GitHub客户端Desktop的安装和使用总结
前言 这段时间想把我写的东西上传到GitHub上,所以开始收集资料学习,走了很多弯路( msysgit和极慢的FQ网速让我欲仙欲死),最后找到了比较好用的工具GitHub Desktop.在此做出自己 ...
- iOS仿微博客户端一条微博的布局
前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看 ...
- 每天一个Linux命令(05)--rm命令
自从学会了用mkdir创建目录之后,整个系统里就只能看到一堆空目录了,囧~ 那么今天我们来学一下如何清理这些空目录吧--rm命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录 ...
- 文件上传----FTP部署
- 使用Spring构建RMI服务器和客户端
上一篇文章我们实用JDK原生API构造了简单RMI应用,本篇将实用Spring框架来构造RMI的应用,实用Spring你会体验到简单,不需要那么多的条条框框,因为Spring给你做了很多封装. 项目构 ...
- Java 大数A+B
public class Solution { public int length = 0; public Object[] numToArrays(int num) { List<Intege ...