Linq中demo,用力看看吧

2022-03-22 08:25:54 字數 3049 閱讀 7943

一、linq的基本語法包含如下的8個上下文關鍵字,這些關鍵字和具體的說明如下:

關鍵字說明

from

指定範圍變數和資料來源

where

根據bool表示式從資料來源中篩選資料

select

指定查詢結果中的元素所具有的型別或表現形式

group

對查詢結果按照鍵值進行分組(igrouping)

into

提供乙個識別符號,它可以充當對join、group或select子句結果的引用

orderby

對查詢出的元素進行排序(ascending/descending)

join

按照兩個指定匹配條件來equals連線兩個資料來源

let產生乙個用於儲存查詢表示式中的子表示式查詢結果的範圍變數

二、linq中where查詢

where子句,它是linq表示式的元素篩選機制,除了開始和結束的位置,它幾乎可以出現在linq表示式的任意位置上。

在乙個linq表示式中,可以有where子句,也可以沒有;可以有乙個,也可以有多個;多個where子句之間的邏輯關係相當於邏輯「與」,每個where子句可以包含1個或多個bool邏輯表示式,這些條件成為謂詞,謂詞邏輯之間用的是「&&」「||」等而不是sql中的and 、or。

where操作包括3種形式,分別為簡單形式、關係條件形式、first()形式。下面分別用例項舉例下:

例如:使用where篩選在倫敦的客戶

var q =

from c in

db.customers

where c.city == "

london

"select c;

2.關係條件形式:篩選庫存量在訂貨點水平之下但未斷貨的產品:

var q =

from p in

db.products

where p.unitsinstock <= p.reorderlevel && !p.discontinued

select p;

下面這個例子是呼叫兩次where以篩選出unitprice大於10且已停產的產品。

var q = db.products.where(p=>p.unitprice > 10m).where(p=>p.discontinued);
3.first()形式:返回集合中的乙個元素,其實質就是在sql語句中加top (1)。

簡單用法:選擇表中的第乙個發貨方。

shipper shipper = db.shippers.first();
元素:選擇customerid 為「bonap」的單個客戶

customer cust = db.customers.first(c => c.customerid == "bonap");
條件:選擇運費大於 10.00 的訂單:

order ord = db.orders.first(o => o.freight > 10.00m);
三、c#中對linq的應用

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

linq_where

,

new gustinfo(),

new gustinfo()

};var query = from gust in

glist

where (gust.name.length > 7 || gust.name.substring(0, 1) == "

m") && gust.age > 9

select

new;

foreach (var g in

query)

,", g.name, g.age);

}console.readkey(

false

);

//2.在where子句中使用自定義函式

var query2 = from gustinfo gust in

glist

where gust.name.length > 5

&&check(gust.name)

select

gust;

foreach (var g in

query2)

,,", g.name, g.age, g.tel);

}console.readkey(

false

);

//3.動態謂詞的篩選

//定義動態謂詞陣列,在實際開發中可以動態獲得

string names = ;

var query3 = from gustinfo guest in

glist

where !names.contains(guest.name)

select

guest;

foreach (var q in

query3)

console.readkey(

false

); }

//自定義函式

static

bool check(string

name)

}}

程式的執行結果如下:

開發中為什麼要寫測試用力

1.你工作不主動,這時需要測試用例來催著去工作。2.你測試時總感覺思維很混亂,或者總感覺有些功能沒有測到,而另 一些功能已經測過好幾遍了,這時測試用例能夠幫你理清頭緒,理 順測試思路,進行比較系統的測試,不會有太多的重複,也不會讓 你的測試工作產生遺漏,可以有效的組織測試執行過程。3.在測試時間緊迫...

LINQ系列 C 中與LINQ相關特性

1.匿名型別 通過關鍵字var定義匿名型別,編譯器將根據運算子右側表示式的值來發出乙個強型別。使用匿名型別時要遵守的一些基本規則 匿名型別必須有乙個初始化值,而且這個值不能是空值 null 因為型別是根據初始化器推斷出來的 匿名型別可以用於簡單型別,也可以用於複雜型別。用於定義簡單型別時,其價值不大...

Linq 中 Distinct 的運用

person1 id 1,name test1 person2 id 1,name test1 person3 id 2,name test2 以上list如果直接使用distinct方法進行過濾,仍然返回3條資料,而需要的結果是2條資料。下面給出解這個問題的方法 方法1 distinct 方法中使...