一、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 =2.關係條件形式:篩選庫存量在訂貨點水平之下但未斷貨的產品:from c in
db.customers
where c.city == "
london
"select c;
var q =下面這個例子是呼叫兩次where以篩選出unitprice大於10且已停產的產品。from p in
db.products
where p.unitsinstock <= p.reorderlevel && !p.discontinued
select p;
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 方法中使...