C LINQ技術簡介

2021-09-05 22:49:56 字數 1385 閱讀 1422

linq技術:解決降低訪問和整合資訊資料的複雜度的問題,即集合訪問技術

linq,語言級整合查詢(language integrated query)

c#3.0 linq 查詢語法

首先來看乙個很簡單的linq查詢例子,查詢乙個int 陣列中小於5的數字,並按照大小順序排列:

class program

static void main(string args)

int arr = new int ;

var m = from n in arr where n < 5 order by n select n;

foreach (var n in m)

console.writeline(n);

console.readline();

上述**除了linq查詢語法外,其他都是我們所熟悉的語法,而linq查詢語法跟sql查詢語法很相識,除了先後順序。

q:為何 linq 查詢語法是以 from 關鍵字開頭的,而不是以 select 關鍵字開頭的?select 開頭這種寫法跟sql的寫法更接近,更易懂呀?

a:簡單來說,為了ide的智慧型感知(intelisence)這個功能,select 關鍵字放在後面了,vb9時代都是放在前面的。

以下為linq語法設計的解釋與補充(linq語法的形式過程),自己可以試著改為linq語法形式:

感覺c#設計人員對linq的語法考慮欠佳,我對linq涉獵不深,但是舉例說明我對linq語法設計的考慮:

問題:從int陣列a中選擇範圍在18~28之間的值,並按照公升序輸出int陣列b

已知:int a;

解決:int b = sql;

問題:從結構體point列表a中選擇距離point o不超過單位100的point列表b

已知:lista; point o; 函式float distance(point a, point b);

解決:listb = sql;

問題:將字串s中所有數字設定為字元'0'

已知:string s; 設char chars = s.tochararray();

解決:char result = sql;

問題:在byte陣列a後插入255,形成新的陣列b

已知:byte a;

解決:byte b = sql;

問題:刪除int陣列a中的負值,形成新的陣列b

已知:int a;

解決:int b = sql;

linq與sql區別:兩者雖然用途相似,但所處的語言環境完全不同。linq處理的是物件實體這些的,而sql則是處理**。如:

int a = ;

// 從陣列中查詢非負整數並按照公升序排列

from n in a where n >= 0 order by n select n

C Linq查詢簡介

查詢是一種從資料來源檢索資料的表示式。linq 通過提供一種跨各種資料來源和資料格式使用資料的一致模型。所有 linq 查詢操作都由以下三個不同的操作組成 獲取資料源。建立查詢。執行查詢。2.建立查詢.var numquery from num in numbers where num 2 0 se...

C Linq分組彙總

linq分組分兩種,一種是表分組彙總,另一種是list 分組彙總。下面分別舉例說明兩種分組彙總。第一種,表的分組彙總 datatable table new datatable table.columns.add 列名1 type.gettype system.int32 table.columns...

C linq 隨筆參考

var querylondoncustomers3 from cust in customers where cust.city london orderby cust.name ascending select cust 聯接運算建立資料來源中沒有顯式建模的序列之間的關聯。例如,您可以執行聯接來查...