Effective C# 学习笔记(八)多用query语法,少用循环
对于C#的query查询语法,其可读性和可维护性要比原来的loop操作好得多
例子:
同样是创建个二维元组,并对其元组按到原点的距离进行倒序排序,用query 语法的表达形式要比原始的循环做法来的更易读、更易于维护,并且省去了用于存储中间过程的额外临时变量(例子中原始方法用的 storage对象)
//原始的循环方法
private static IEnumerable<Tuple<int, int>> ProduceIndices3()
{
var storage = new List<Tuple<int, int>>();
for (int x = 0; x < 100; x++)
for (int y = 0; y < 100; y++)
if (x + y < 100)
storage.Add(Tuple.Create(x, y));
storage.Sort((point1, point2) =>
(point2.Item1*point2.Item1 +
point2.Item2 * point2.Item2).CompareTo(
point1.Item1 * point1.Item1 +
point1.Item2 * point1.Item2));
return storage;
}
//query syntax
private static IEnumerable<Tuple<int, int>> QueryIndices3()
{
return from x in Enumerable.Range(0, 100)
from y in Enumerable.Range(0, 100)
where x + y < 100
orderby (x*x + y*y) descending
select Tuple.Create(x, y);
}
//using the method call syntax
private static IEnumerable<Tuple<int, int>> MethodIndices3()
{
return Enumerable.Range(0, 100).
SelectMany(x => Enumerable.Range(0,100),
(x,y) => Tuple.Create(x,y)).
Where(pt => pt.Item1 + pt.Item2 < 100).
OrderByDescending(pt =>
pt.Item1* pt.Item1 + pt.Item2 * pt.Item2);
}
转载于:https://www.cnblogs.com/haokaibo/archive/2011/07/03/2096968.html
Effective C# 学习笔记(八)多用query语法,少用循环相关推荐
- MongoDB 学习笔记八 复制、分片、备份与恢复、监控
MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...
- Kotlin学习笔记(3)- 语法
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
- Effective C++ 学习笔记 第七章:模板与泛型编程
第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...
- OpenGL学习笔记(八):进一步理解VAO、VBO和SHADER,并使用VAO、VBO和SHADER绘制一个三角形
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7888 ...
- ReactJS学习笔记八:动画
ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...
- ROS学习笔记八:创建ROS msg和srv
ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...
- Halcon 学习笔记八:颜色识别
Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...
- ZooKeeper学习笔记(八):ZooKeeper集群写数据原理
写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...
最新文章
- 旅行售货员 java_JAVA旅行商售货TSP
- 图像分割之(二)Graph Cut(图割)
- HashMap和HashSet的内部工作机制
- zabbix-server-mysql安装_zabbix server 安装部署
- 计算机中丢失dinput8,修复dnfdinput8.dll
- 让input支持 ctrl v上传粘贴图片? 让input支持QQ截图或剪切板中的图像数据(Java实现保存)...
- web前端基础知识-(六)jQuery-补
- Win10蓝牙鼠标老是断连卡顿的解决方法
- DXUT框架剖析(6)
- MarkDown常用语法及word转MarkDown
- 怎样删除Word文档的强制性回车、断行
- 软件架构领域集大成者——《架构之美》读书笔记
- 03、单线通讯—SIF通讯协议(一线通)案例二
- Leetcode刷题 2021.02.15
- 一年工作经验,两周的面试,拿到几个offer的面试经验总结
- php支付宝的签名处理,PHP实现RSA签名生成订单功能【支付宝示例】
- 供应链安全 | 北京大学软件工程国家工程研究中心 张世琨:软件供应链安全的风险和成因分析
- 工具学习——有哪些好用的语音转文字app
- 任意列+左右两列等高布局,并要求有最小高度
- 计算机复制操作的方法,怎么用键盘复制粘贴?电脑使用键盘复制粘贴的方法
热门文章
- rca接口_音频线怎么区别?几种音频接口逐一介绍
- 计算机毕业论文多久,计算机毕业论文
- kdj值应用口诀_KDJ买卖绝学!记住这些操作 精准判断quot;顶部和底部quot; 让你远离亏损...
- vc6 前进后退 番茄_openMP 使用 VC6+Intel Compiler 9.1 (来自网络)
- C++中sstream的简单使用
- python免安装版_web.py入门01——python安装
- Docker镜像加速,设置国内源
- python验证卡普耶卡(D.R.Kaprekar)6174猜想
- 如何用java语言实现C#中的ref关键字(按引用传递参数)的效果
- HDU 1232 - 畅通工程