亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

LINQ基礎(chǔ)概述

系統(tǒng) 1907 0
介紹LINQ基礎(chǔ)之前,首說一下LINQ的歷史和LINQ是什么, 然后說一下學(xué)習(xí) LINQ 要了解的東西和 LINQ 基礎(chǔ)語法
LINQ的歷史

從語言方面的進(jìn)化
委托
匿名方法
Lambda表達(dá)式
Linq查詢表達(dá)式

上邊這四個我會在下邊一一解說

從時間方面的演進(jìn)
–2004年
–2005年9月,C#2.0的PDC上發(fā)布
–2005年11月,C#2.0預(yù)覽版
–2006年1月,VB8.0預(yù)覽版
–2007年11月,.net 3.5發(fā)布

LINQ是什么

LINQ是語言級集成查詢(Language INtegrated Query)
LINQ是一種用來進(jìn)行數(shù)據(jù)訪問的編程模型,使得.NET語言可以直接支持?jǐn)?shù)據(jù)查詢
LINQ的目標(biāo)是降低訪問數(shù)據(jù)的復(fù)雜度
LINQ可以用統(tǒng)一的方法訪問不同類型的數(shù)據(jù),可以將數(shù)據(jù)作為對象使用
能夠更好地與編程模型集成
可以在Visual Studio中進(jìn)行智能提示
動態(tài)編程

LinQ目的

面向?qū)ο蠹夹g(shù)誕生以來并沒有解決降低訪問和整合信息數(shù)據(jù)的復(fù)雜度的問題。其中兩個最主要訪問的數(shù)據(jù)源與數(shù)據(jù)庫和 XML 相關(guān)。

使用LINQ的目的是為了提供一個解決對象關(guān)系映射問題的方案,同時簡化對象和數(shù)據(jù)源的交互。LINQ最終發(fā)展成為一個通用語言集成查詢的工具包。

LINQ正如它的名字“集成查詢語言”的含義一樣,它提供給程序員一個統(tǒng)一的編程界面。程序員不需要關(guān)心他將要操作的將是關(guān)系數(shù)據(jù)庫還是XML,甚至是遠(yuǎn)程的對象,它都采用同樣的查詢方式。就如同通過T-SQL操縱數(shù)據(jù)庫一樣,不管是Oracle,SyBase還是SQL Server,他們的Select語法都是一樣的。

有了LINQ,程序員便可以不再沉泥于不同的數(shù)據(jù)訪問技術(shù)的學(xué)習(xí)。不管編程語言如何發(fā)展,還是數(shù)據(jù)庫技術(shù)的發(fā)展,都不再需要程序員進(jìn)行學(xué)習(xí),數(shù)據(jù)存儲的效率由數(shù)據(jù)庫廠商進(jìn)行優(yōu)化,靈活的數(shù)據(jù)操作方法由數(shù)據(jù)訪問中間件廠商提供,程序員只需要編寫業(yè)務(wù)邏輯。

LINQ包括:
–LINQ to Objects 用于對象的查詢
–LINQ to XML 對XML數(shù)據(jù)的查詢
–LINQ to ADO.NET 對數(shù)據(jù)庫的查詢
LINQ to DataSets 數(shù)據(jù)集
LINQ to Entities ORM對象
LINQ to SQL 簡易ORM框架
命名空間在System.Linq
實(shí)現(xiàn) IEnumerable<T> 或 IQueryable<T> 接口的對象都可使用LINQ操作

LINQ框架圖

委托
委托是一種定義方法簽名的類型。 當(dāng)實(shí)例化委托時,您可以將其實(shí)例與任何具有兼容簽名的方法相關(guān)聯(lián)。 您可以通過委托實(shí)例調(diào)用方法。
委托用于將方法作為參數(shù)傳遞給其他方法。 事件處理程序就是通過委托調(diào)用的方法
public delegate void MyF1 ( int a);
public void M1( int a)
{
Console .WriteLine(a);
}
MyF1 _myf1 = M1 ;
myf1(3);
與委托的簽名(由返回類型和參數(shù)組成)匹配的任何可訪問類或結(jié)構(gòu)中的任何方法都可以分配給該委托。 方法可以是靜態(tài)方法,也可以是實(shí)例方法。 這樣就可以通過編程方式來更改方法調(diào)用,還可以向現(xiàn)有類中插入新代碼。 只要知道委托的簽名,就可以分配您自己的方法。
匿名方法
我們在使用一個方法的時候, 一般情況下我們會先把方法名、參數(shù)、返回值
寫出來也稱做命名方法
int MyMethod(int a){}
匿名方法的意思就是不用給定方法的名稱。允許我們定義委托對象可以接收的代碼
上邊的委托我們可以寫成
MyF1 _f = delegate ( int a)
{
Console .WriteLine(a);
};
_f(1);
例button的點(diǎn)擊事件
通常的寫法是
button1.Click += button1_Click;
void button1_Click( object sender, EventArgs e)
{
MessageBox .Show( "Click!" )
}
用匿名方法可以這樣
button1.Click += delegate ( object obj1, EventArgs e)
{
MessageBox .Show( "Click!" );
};
Lambda 表達(dá)式
lambda 取代的匿名方法
Lambda 表達(dá)式是一個可用于創(chuàng)建委托或表達(dá)式樹類型的匿名函數(shù)。 通過使用 lambda 表達(dá)式,可以寫入可作為參數(shù)或返回為函數(shù)調(diào)用值的本地函數(shù)。 Lambda 表達(dá)式對于編寫 LINQ 查詢表達(dá)式特別有用。
若要創(chuàng)建 Lambda 表達(dá)式,必須在 Lambda 運(yùn)算符 => 左側(cè)指定輸入?yún)?shù)(如果有),然后在另一側(cè)輸入表達(dá)式或語句塊。 例如,lambda 表達(dá)式 x => x * x 指定名為 x 的參數(shù)并返回 x 的平方。
我們還是用上邊的delegate例子:
MyF1 _my1 = a =>
{
Console .WriteLine(a);
};
_my1(3);
Button的點(diǎn)擊事件可以寫成這樣
button1.Click += (obj1, obje2) =>
{
MessageBox .Show( "Click!" );
};
Linq的基本語法
所有 LINQ 查詢操作都由以下三個不同的操作組成:
獲取數(shù)據(jù)源。
創(chuàng)建查詢。
執(zhí)行查詢。
查詢表達(dá)式必須以 from 子句開頭,并且必須以 select 或 group 子句結(jié)尾。 在第一個 from 子句和最后一個 select 或 group 子句之間,查詢表達(dá)式可以包含一個或多個下列可選子句:where、orderby、join、let 甚至附加的 from 子句。 還可以使用 into 關(guān)鍵字使 join 或 group 子句的結(jié)果能夠充當(dāng)同一查詢表達(dá)式中附加查詢子句的源。
int [] _scores = new int [] { 97, 92, 81, 60 };
IEnumerable < int > _query =
from score in _scores
where score > 80
select score;
foreach ( int i in _query)
{
Console .WriteLine(i + " " );
}
也可以這么寫
IEnumerable < int > _query = _scores.Where(x => x > 80);
foreach ( int i in _query)
{
Console .WriteLine(i + " " );
}

下圖顯示了完整的查詢操作。在 LINQ 中,查詢的執(zhí)行與查詢本身截然不同;換句話說,如果只是創(chuàng)建查詢變量,則不會檢索任何數(shù)據(jù)。

完整的 LINQ 查詢操作
查詢變量本身只是存儲查詢命令。 實(shí)際的查詢執(zhí)行會延遲到在 foreach 語句中循環(huán)訪問查詢變量時發(fā)生。 此概念稱為“延遲執(zhí)行”

LINQ基礎(chǔ)概述


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美精品一区 | 四虎影视com88 | 日日操夜夜爱 | 午夜 福利 | 日韩视频在线观看一区 | 久久的爱久久久久的快乐 | 国产片一区二区三区 | 四虎院影永久在线观看 | 成人毛片基地 | 国产精品免费入口视频 | 亚洲欧美综合一区 | 久久99热久久精品91 | 久久久久久中文字幕 | 久久一本| 一级毛片一 | 久久久久日韩精品无 | 亚洲视频综合 | 91在线视屏| 看黄a大片 免费 | 伊人网综合 | 日本美女久久 | 国内欧美一区二区三区 | 手机看片在线精品观看 | 久久久久久久尹人综合网亚洲 | 99精品视频不卡在线观看免费 | 久久精品一区二区三区四区 | 久久99精品国产自在现线小黄鸭 | 精品一区二区三区在线观看视频 | 免费国产小视频在线观看 | 久草视频资源在线 | 久久66热这里只会有精品 | 欧美性色生活片天天看99 | 69精品久久久久 | 久久国内精品 | 四虎影院在线观看免费 | 九九色在线视频 | 妖精视频免费在线观看 | 亚洲国产精品一区二区不卡 | 亚洲第99页 | 婷婷网五月天天综合天天爱 | 香蕉视频在线观看www |