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.pswp.cn/news/286116.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286116.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286116.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言試題四十七之程序定義了N×M的二維數組,并在主函數中自動賦值。請編寫函數function(int a[N][M], int m),該函數的功能是:將數組右上半三角元素中的值乘以m。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 程序定義了…

第六章 三大消息摘要算法總結

6.1、MD5 推薦使用CC&#xff08;即Commons Codec&#xff09;實現雖然已被破解&#xff0c;但是仍舊廣泛用于注冊登錄模塊與驗證下載的文件的完整性可以自己寫一個注冊登錄模塊&#xff1b;自己下載一個MD5加密的文件&#xff0c;然后通過之前編寫的工具類&#xff08;或者使用…

一、博客首頁搭建搭建《iVX低代碼仿CSDN個人博客制作》

制作iVX 低代碼項目需要進入在線IDE&#xff1a;https://editor.ivx.cn/ 一、頭部導航欄思路參考 首先我們可以查看CSDN的博客首頁&#xff0c;從中查看一下布局&#xff1a; 在以上首頁中&#xff0c;我們可以得知其頂部為一個整行&#xff0c;這個行內容左側為一個logo&am…

【MATLAB統計分析與應用100例】案例008:調用rand函數生成均勻分布隨機數

文章目錄 1. 生成隨機數分布直方圖2. 生成隨機數矩陣,服從均勻分布1. 生成隨機數分布直方圖 x = rand(10) % 生成10行10列的隨機數矩陣,其元素服從[0,1]上均勻分布 y = x(:)

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轉載于…

拆分備份(還原)比較大的數據庫為多個bak文件

工作中由于個別數據庫比較大&#xff0c;生成的備份文件也比較大&#xff0c;不方便存儲或者轉移&#xff0c;可以將文件備份為多個小的bak文件。 比如一個200G的數據庫&#xff0c;可以拆分備份為10個bak文件&#xff0c;則每個bak文件約在20G左右。 備份代碼&#xff1a; /…

C語言試題四十八之該函數可以統計一個長度為2的字符串在另一個字符串中出現的次數。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

Rafy 框架 - 幽靈插件(假刪除)

Rafy 框架又添新成員&#xff1a;幽靈插件。本文將解釋該插件的場景、使用方法、原理。 場景 在開發各類數據庫應用系統時&#xff0c;往往需要在刪除數據時不是真正地刪除數據&#xff0c;而只是把數據標識為‘已刪除’狀態。這些數據在業務邏輯上是已經完全刪除、不可用的數據…

C#-Linq源碼解析之Average

前言在Dotnet開發過程中&#xff0c;Average作為IEnumerable的擴展方法&#xff0c;十分常用。本文對Average方法的關鍵源碼進行簡要分析&#xff0c;以方便大家日后更好的使用該方法。使用Average 計算數值序列的平均值假如我們有這樣的一個集合List<int> grades new L…

二、博客首頁完成《iVX低代碼仿CSDN個人博客制作》

制作iVX 低代碼項目需要進入在線IDE&#xff1a;https://editor.ivx.cn/ 一、菜單思路參考及制作 在 CSDN 首頁中的菜單部分為一串橫排的內容&#xff0c;并且可以進行拖動&#xff1a; 首先咱們添加一個行&#xff0c;命名為菜單&#xff1a; 接著肯定是需要設置上下的內邊…

【MATLAB統計分析與應用100例】案例009:創建一個RandStream類對象,調用其randn方法生成標準正態分布隨機數

文章目錄 1. 創建一個RandStream類對象s,其隨機數生成器的算法為mlfg6331_64,初始種子為102. 調用對象s的randn方法生成10行10列的隨機數矩陣x,其元素服從標準正態分布1. 創建一個RandStream類對象s,其隨機數生成器的算法為’mlfg6331_64’,初始種子為10 % 對象s的randn方…

CentOS 安裝NTFS-3G,讓系統支持NTFS分區的方法

1、ntfs-3g依賴FUSE&#xff08;Filesystem in Userspace&#xff09; 先處理依賴 安裝FUSE yum install fuse -y 2、下載并安裝ntfs-3g &#xff08;先確定正確安裝了rpmforge 套件&#xff0c;然后安裝下列套件&#xff1a; yum install fuse fuse-ntfs-3g 若rpmforge的設置…

現在是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…

Blazor University (28)表單

原文鏈接&#xff1a;https://blazor-university.com/forms/表單源代碼[1]EditForm 組件是 Blazor 管理用戶輸入的方法&#xff0c;這種方法可以輕松地對用戶輸入執行驗證。它還提供了檢查是否滿足所有驗證規則的能力&#xff0c;如果沒有滿足&#xff0c;則向用戶顯示驗證錯誤…

【遙感物候】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;不影響原文…