Linq查詢表達(dá)式簡(jiǎn)單概述
在向大家詳細(xì)介紹Linq查詢表達(dá)式之前,首先讓大家了解下什么是Linq查詢表達(dá)式,然后全面介紹Linq查詢表達(dá)式。
Linq查詢表達(dá)式
于是,語(yǔ)言設(shè)計(jì)團(tuán)隊(duì)設(shè)計(jì)了一種與 SQL 更為相近的語(yǔ)法,稱為L(zhǎng)inq查詢表達(dá)式。例如,針對(duì)我們的示例的Linq查詢表達(dá)式可如下所示:
- var locals = from c in customers
- where c.ZipCode == 91822
- select new { FullName = c.FirstName + “ “ +
- c.LastName, HomeAddress = c.Address };
Linq查詢表達(dá)式是基于上述語(yǔ)言功能構(gòu)建而成。它們?cè)谡Z(yǔ)法上,完全轉(zhuǎn)換為我們已經(jīng)看到的基礎(chǔ)語(yǔ)法。例如,上述查詢可直接轉(zhuǎn)換為:
- var locals = customers.Where(c => c.ZipCode == 91822).Select(c => new
- {
- FullName = c.FirstName + “ " +c.LastName, HomeAddress = c.Address });
Linq查詢表達(dá)式支持許多不同的“子句”,如 from、where、select、orderby、group by、let 和 join。這些子句先轉(zhuǎn)換為對(duì)等的運(yùn)算符調(diào)用,后者進(jìn)而通過(guò)擴(kuò)展方法實(shí)現(xiàn)。如果查詢語(yǔ)法不支持必要運(yùn)算符的子句,則查詢子句和實(shí)現(xiàn)運(yùn)算符的擴(kuò)展方法之間的緊密關(guān)系很便于將兩者結(jié)合。例如:
- var locals = (from c in customers where c.ZipCode == 91822 select new {
FullName = c.FirstName + “ " + c.LastName, HomeAddress = c.Address}) .Count();
通過(guò)該種方法,我們已經(jīng)設(shè)法在結(jié)束時(shí)達(dá)到了開始時(shí)的目標(biāo)(我對(duì)這一點(diǎn)始終覺(jué)得非常滿意)。下一版本的 C# 的語(yǔ)法歷經(jīng)數(shù)年時(shí)間的發(fā)展,嘗試了許多新的語(yǔ)言功能,才最終到達(dá)近乎于 2004 年冬提議的原始語(yǔ)法的境界。Linq查詢表達(dá)式的加入以 C# 即將發(fā)布的版本的其他語(yǔ)言功能為基礎(chǔ),并促使許多查詢情況更便于具有 SQL 背景的開發(fā)人員閱讀和理解。
【編輯推薦】