LINQ 標(biāo)準(zhǔn)查詢操作符
2024-07-10 12:42:35
供稿:網(wǎng)友
推薦大家下載本文的PDF進(jìn)行閱讀,可以方便的使用書(shū)簽來(lái)閱讀各個(gè)方法,而且代碼中的關(guān)鍵字是高亮顯示的。
pdf版下載地址 //www.survivalescaperooms.com/books/24738.html
一、投影操作符
1. Select
Select操作符對(duì)單個(gè)序列或集合中的值進(jìn)行投影。下面的示例中使用select從序列中返回Employee表的所有列:
代碼如下:
using (NorthwindDataContext db=new NorthwindDataContext())
{
//查詢語(yǔ)法
var query =
from e in db.Employees
where e.FirstName.StartsWith("M")
select e;
//方法語(yǔ)法
var q =
db.Employees
.Where(e => e.FirstName.StartsWith("M"))
.Select(e => e);
foreach (var item in query)
{
Console.WriteLine(item.FirstName);
}
}
當(dāng)然,你也可以返回單個(gè)列,例如:
代碼如下:
var query =
from e in db.Employees
where e.FirstName.StartsWith("M")
select e.FirstName;
你也可以返回序列中的某幾列,例如:
代碼如下:
var query =
from e in db.Employees
where e.FirstName.StartsWith("M")
select new
{
e.FirstName,
e.LastName,
e.Title
};
2. SelectMany
SelectMany操作符提供了將多個(gè)from子句組合起來(lái)的功能,它將每個(gè)對(duì)象的結(jié)果合并成單個(gè)序列。下面是一個(gè)示例:
代碼如下:
using (NorthwindDataContext db=new NorthwindDataContext())
{
//查詢語(yǔ)法
var query =
from e in db.Employees
from o in e.Orders
select o;
//方法語(yǔ)法
var q =
db.Employees
.SelectMany(e => e.Orders);
foreach (var item in query)
{
Console.WriteLine(item.Freight);
}
}
二、限制操作符
Where是限制操作符,它將過(guò)濾標(biāo)準(zhǔn)應(yīng)用在序列上,按照提供的邏輯對(duì)序列中的數(shù)據(jù)進(jìn)行過(guò)濾。
Where操作符不啟動(dòng)查詢的執(zhí)行。當(dāng)開(kāi)始對(duì)序列進(jìn)行遍歷時(shí)查詢才開(kāi)始執(zhí)行,此時(shí)過(guò)濾條件將被應(yīng)用到查詢中。Where操作符的使用方法已經(jīng)在第一節(jié)中出現(xiàn)過(guò),這里不再冗述。
三、排序操作符
排序操作符,包括OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse,提供了升序或者降序排序。
1. OrderBy
OrderBy操作符將序列中的元素按照升序排列。下面的示例演示了這一點(diǎn):
代碼如下:
using (NorthwindDataContext db = new NorthwindDataContext())
{
//查詢語(yǔ)法
var query =
from e in db.Employees
orderby e.FirstName
select e;
//方法語(yǔ)法
var q =
db.Employees
.OrderBy(e => e.FirstName)
.Select(e => e);
foreach (var item in q)
{
Console.WriteLine(item.FirstName);
}
}
這里可以使用OrderBy的重載方法OrderBy(Func<T,TKey>,IComparer<Tkey>)來(lái)指定序列的排序方式。
2. OrderByDescending
OrderByDescending操作符將序列中的元素按照降序排列。用法與OrderBy相同,這里不再演示。