C# 查询大型数据集

66b6d612fc55a175f699b07f562a28e9.png

LINQ 语法非常好,但其作用是什么?我们只要查看源数组,就可以看出需要的结果,为什么要查询这种一眼就能看出结果的数据源呢?有时查询的结果不那么明显,在下面的示例中,就创建了一个非常大的数字数组,并用 LINQ 查询它。

f93efd7a59e69e4ddb97e553053cd0bc.png

(1) 与以前一样,创建项目时,Visual Studio  会自动在Program.cs 中包含 Linq 名称空间。

using System;
using System.Collections.Generic; 
using System.Linq;
using System.Text;

056a01c08882f2916577794631472678.png

(2) 在 Main() 方法中添加如下代码:

static void Main(string[] args)
{int[] numbers = GenerateLotsOfNumbers(12345678);var queryResults =from n in numbers where n < 1000 select n;Console.WriteLine("Numbers less than 1000:"); foreach (var item in queryResults){Console.WriteLine(item);}Console.Write("Program finished, press Enter/Return to continue:"); Console.ReadLine();
}

b466b0a1486d2b9adb74524a62f62637.png

(3)添加如下方法,生成一个随机数列表:

private static int[] GenerateLotsOfNumbers(int count)
{Random generator = newRandom(0); int[] result = new int[count]; for (int i = 0; i < count; i++){result[i] = generator.Next();}return result;
}

ca2dc76e6594205a4c9ae6103fbfe581.png

(4)编译并执行程序。结果是一个小于 1000 的数字列表,如下所示:

Numbers less than 1000:
714
24
677
350
257
719
584
Program finished, press Enter/Return to continue:

16713475c782ae59caef2960934602b1.png

示例的说明

与前面一样,第一步是引用 System.Linq 名称空间,这是在创建项目时由 Visual Studio  自动引用的:

using System.Ling;

977ad668a7d0e1d1fd21b5f93c468029.png

接着创建一些数据,本例中是创建并调用 GenerateLotsOfNumbers() 方法:

int[] numbers = GenerateLotsOfNumbers(12345678);
private static int[] GenerateLotsOfNumbers(int count)
{Random generator = new Random(0); int[] result = new int[count]; for (int i = 0; i < count; i++){result[i] = generator.Next();}return result;
}

070c04149b2cdd6bd10dc99b580cc07e.png

这不是一个小数据集,数组中有1200万个数字!需要修改传送给GenerateLotsOfNumbers() 方法的 size 参数,生成数量不同的随机数,看看这会对查询结果有什么景响。这里的 size 参数12 345 678非常大,足以生成一些小于1 000的随机数,从而获得为第一个查询显示的结果。

bd31dfb7c2a58314aaaad049709adb7e.png

数值应随机分布在有符号的整数范围内(从 0 到超过 20 亿)。用种子值 0 创建随机数生成器,可以确保每次创建相同的随机数集合,这是可以重复的,所以会获得与此处相同的查询结果,但在尝试一些查询之前,并不知道查询结果是什么。而LINQ 使这些查询很容易编写。

3d9d4a90a2c57ea2e427605e2d1c83c4.png

查询语句本身类似于前面用于 names 数组的查询,也是选择满足条件的数字(这里是数字小于1 000):

var queryResults =from n in numbers where n < 1000 select n

993a99e5b5a117b479735bb4cf9b1922.png

这次不需要 orderby 子句,但处理时间略长(对于这个查询,处理时间的变化不太明显,但下一个示例会改变选择条件,处理时间的变化就比较明显了)。

用 foreach 语句输出查询的结果,与前面的示例相同:

Console.WriteLine("Numbers less than 1000:");
foreach (var item in queryResults) {Console.WriteLine(item);
}

6abef0522ae5f642f4c9cb41955161ea.png

同样,将结果输出到控制台上,并读取一个字符以暂停输出:

Console.Write("Program finished, press Enter/Return to continue:");
Console.ReadLine();

2eb80f24639fc5bb60497d3dd749e3a8.png

使用 LINQ,可以很容易地修改查询条件,以便演示数据集的不同特性。但是,根据查询返回的结果数,每次都输出所有的结果是没有意义的。

f534d55f0b7c7996bb413694056d07f7.png

3a84a168528b8ccffd57d58954fd42bc.png

 微信公众号 

DotNet讲堂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、博客首页搭建搭建《iVX低代码仿CSDN个人博客制作》

制作iVX 低代码项目需要进入在线IDE&#xff1a;https://editor.ivx.cn/ 一、头部导航栏思路参考 首先我们可以查看CSDN的博客首页&#xff0c;从中查看一下布局&#xff1a; 在以上首页中&#xff0c;我们可以得知其顶部为一个整行&#xff0c;这个行内容左侧为一个logo&am…

linux samba服务器

本文转自wanglm51051CTO博客&#xff0c;原文链接&#xff1a; http://blog.51cto.com/studyit2016/1890282&#xff0c;如需转载请自行联系原作者

modernizer的意义

modernizer是一个js文件&#xff0c;会检查当前的浏览器支持什么特性&#xff0c;就在Html标签上添加什么类&#xff0c;然后如果不支持添加no-xxx类&#xff0c;这样&#xff0c;就可以针对两种情况写两种css。 http://blog.chinaunix.net/uid-21633169-id-4286857.html转载于…

Rafy 框架 - 幽灵插件(假删除)

Rafy 框架又添新成员&#xff1a;幽灵插件。本文将解释该插件的场景、使用方法、原理。 场景 在开发各类数据库应用系统时&#xff0c;往往需要在删除数据时不是真正地删除数据&#xff0c;而只是把数据标识为‘已删除’状态。这些数据在业务逻辑上是已经完全删除、不可用的数据…

二、博客首页完成《iVX低代码仿CSDN个人博客制作》

制作iVX 低代码项目需要进入在线IDE&#xff1a;https://editor.ivx.cn/ 一、菜单思路参考及制作 在 CSDN 首页中的菜单部分为一串横排的内容&#xff0c;并且可以进行拖动&#xff1a; 首先咱们添加一个行&#xff0c;命名为菜单&#xff1a; 接着肯定是需要设置上下的内边…

现在是2016-09-23,查询2个月后的月份和入职的月份相同的数据

select * from emp where to_char(hiredate,mm)to_char(add_months( sysdate,2),mm); 结果&#xff1a; 转载于:https://www.cnblogs.com/feng666666/p/5900182.html

Git之创建远程分支和删除远程分支

1、创建远程分支browser-1.8.0 在没有创造browser-1.8.0之前,我们先查看下所有分支 git branch -a 可以知道我们目前在browser-1.7.0分支,然后我们创建本地分支browser-1.8.0 git branch browser-1.8.0 再看下所有分支 git branch -a 然后我们再切换到分支browser-1.8.…

ASIHTTPRequest源码简单分析

2019独角兽企业重金招聘Python工程师标准>>> 1.前言 ASIHttprequest 是基于CFNetwork的&#xff0c;由于CFNetwork是比较底层的http库&#xff0c;功能比较少&#xff0c;因此&#xff0c;在ASIHttprequest中实现了http协议中比较多的功能&#xff0c;包括代理、gzi…

【遥感物候】1983-2012年时间序列中国地区GIMMS 3g NDVI下载(已进行旋转、格式转换、投影变换和裁剪)

文章目录 1. 数据集简介2. 数据集预览3. 数据集下载1. 数据集简介 本数据集为1983-2012年,长时间序列中国地区GIMMS 3g NDVI,空间分辨率为0.08333度,作者已完成了数据预处理:包括旋转、格式转换、投影变换和裁剪),作者可以此基础上直接进行NDVI时空变化趋势分析、基于NDV…

三、博客首页完成《iVX低代码仿CSDN个人博客制作》

制作iVX 低代码项目需要进入在线IDE&#xff1a;https://editor.ivx.cn/ 一、首页内容分析 此时我们分析一下首页内容&#xff1a; 通过以上内容可以得知&#xff0c;这些内容都统一包含在一个块之内&#xff0c;这个块之内包含了多个内容&#xff0c;这些内容主要是分为标题…

正则表达式 (grep)

正则表达式 (grep) grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。搜索的结果被送到屏幕&#xff0c;不影响原文…

vuejs 和 element 搭建的一个后台管理界面【收藏】

介绍&#xff1a; 这是一个用vuejs2.0和element搭建的后台管理界面。 相关技术&#xff1a; vuejs2.0&#xff1a;渐进式JavaScript框架&#xff0c;易用、灵活、高效&#xff0c;似乎任何规模的应用都适用。 element&#xff1a;基于vuejs2.0的ui组件库。 vue-router&#xff…

【MATLAB统计分析与应用100例】案例010:matlab调用normrnd函数生成正态分布随机数

效果预览: 文章目录 1. 调用normrnd函数生成1000行3列的随机数矩阵x,其元素服从均值为75,标准差为8的正态分布(1)代码(2)运行效果2. 调用normrnd函数生成1000行3列的随机数矩阵x,其各列元素分别服从不同的正态分布(1)代码(2)运行效果<

四、博客详情页完成《iVX低代码仿CSDN个人博客制作》

制作iVX 低代码项目需要进入在线IDE&#xff1a;https://editor.ivx.cn/ 一、博客详情页分析 博客详情页大体分为顶部标题、发布时间、作者信息、博文内容&#xff0c;底部的评论我们在此不必做悬浮内容&#xff0c;咱们直接放到博文之下进行显示即可&#xff1b;顶部标题需要…

【原创】erlang 模块之 application

2019独角兽企业重金招聘Python工程师标准>>> kernel-2.15.2 中的内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 转载于:https://my.oschina.net/moooofly/blog/595122

RabbitMQ详解(三)

一、分发到多Consumer(fanout) 二、Routing路由(Direct) 三、主题路由(Topic)一、分发到多Consumer(fanout)将同一个Message deliver到多个Consumer中。这个模式也被称为"publish/subscribe" 创建一个日志系统&#xff0c;包含两部分&#xff1a;第一部分发出log(Pro…

重磅 | Linux内核5.19初步支持LoongArch架构

经过龙芯中科与内核社区一年多的紧密合作&#xff0c;北京时间2022年6月4日清晨&#xff0c;Linux内核社区正式合并LoongArch架构支持代码。随着Linux-5.19的rc1版本的正式发布&#xff0c;LoongArch体系结构主体部分的源码已合并到内核主线之中&#xff0c;其余相关代码正在进…

【MATLAB统计分析与应用100例】案例011:matlab读取Excel数据,调用regress函数作一元线性回归分析

数据拟合效果预览: 文章目录 1. 读取数据,绘制散点图2. 计算相关系数3. 绘制回归直线4. 剔除异常数据,重新调用regress函数作一元线性回归1. 读取数据,绘制散点图 ClimateData = xlsread(examp08_01.xls); % 从Excel文件读取数据 x &

“*** IS NOT TRANSLATED IN …….. 解决办法

首先引起提示的原因是因为Lint 代码检查工具发现你的项目中&#xff08;或者引用的三方库&#xff09;有部分string.xml文件内容做了国际化操作&#xff0c;但却不完整&#xff0c;有些文本内容并没有相应的国际化翻译&#xff0c;在android开发中常见于项目引用的Libraries第三…

[转] ArcEngine 产生专题图

小生原文 ArcEngine 产生专题图 ArcEngine提供多个着色对象用于产生专题图&#xff0c;可以使用标准着色方案&#xff0c;也可以自定义着色方案&#xff0c;ArcEngine提供8中标准着色方案。 一、SimpleRenderer专题图 是使用单一符号进行着色分类&#xff0c;不涉及对要素的数据…