天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類型與隱式類型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


理論部分也聊了好幾篇了,從今天開(kāi)始我們就來(lái)進(jìn)行一些實(shí)例,看到代碼才心安點(diǎn),呵呵。這個(gè)例子將貫穿本系列的后續(xù)所有篇章。

以博客園為例建模:

博客園里每個(gè)用戶有且僅有一個(gè)博客,為了簡(jiǎn)單每篇博客只能屬于一個(gè)分類,每個(gè)用戶有一個(gè)角色

下面是代碼

public class User
{
/**//// <summary>
/// 用戶編號(hào)
/// </summary>
public int UserId { get; set; }
/**//// <summary>
/// 博客園Id
/// </summary>
public string UserName { get; set; }
/**//// <summary>
/// 密碼
/// </summary>
public string Password { get; set; }
/**//// <summary>
/// 博客名稱
/// </summary>
public string BlogName { get; set; }
/**//// <summary>
/// 角色
/// </summary>
public Role Role { get; set; }
}

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類型與隱式類型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


現(xiàn)在假設(shè)博客園程序啟動(dòng)的時(shí)候?qū)?shù)據(jù)庫(kù)所有數(shù)據(jù)讀入到內(nèi)存中(多么荒謬啊,呵呵,僅僅是個(gè)假設(shè)),填充到上面這些對(duì)象里,那我們?cè)趦?nèi)存中就有了這些集合: IList users,IList posts,IList roles,我們現(xiàn)在使用Linq to Objects對(duì)這些集合進(jìn)行各種操作

向查詢表達(dá)式傳入?yún)?shù)

現(xiàn)在有一個(gè)用戶輸入http://yuyijq.cnblogs.com,通過(guò)UrlRewrite,這個(gè)連接將轉(zhuǎn)向到http://www.cnblogs.com/blog.ASPx?u=yuyijq,那現(xiàn)在我們的程序要干些什么呢?首先根據(jù)yuyijq讀取該博主的所有帖子。那就要從IList集合里查找出UserName為”yuyijq”的所有帖子,但是顯示在博客首頁(yè)上的時(shí)候并不需要帖子的內(nèi)容,如果把帖子內(nèi)容也讀取的話太耗資源了,只需要博客的標(biāo)題,然后我們將這個(gè)只有標(biāo)題和摘要的對(duì)象的集合綁定到一個(gè)GridView上:

var dataSource = from post in posts
              
where post.UserName == "yuyijq"
              select post.Title;
mainGridView.DataSource 
= dataSource;
mainGridView.DataBind();

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類型與隱式類型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


非泛型集合的查詢

雖然今天C#已經(jīng)發(fā)展到了3.0,但是在2.0里出現(xiàn)的泛型并沒(méi)有得到全面的普及,很多開(kāi)發(fā)者還是在程序里大量使用1.x里出現(xiàn)的一些非泛型集合,比如ArrayList就是個(gè)代表,那么如果存在這樣一個(gè)集合我們?cè)趺慈ゲ樵儯?/p>ArrayList posts = dataBase.GetAllPosts();

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類型與隱式類型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


排序

在數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用中我們經(jīng)常需要對(duì)數(shù)據(jù)根據(jù)一些屬性進(jìn)行排序,而通常這些排序的屬性應(yīng)該是用戶可以自己設(shè)置的,比如博客,可以根據(jù)點(diǎn)擊率排序,也可以根據(jù)評(píng)論排序,甚至兩者都作為排序根據(jù)。還有什么順序啊,倒序啊,也就是這個(gè)排序是個(gè)動(dòng)態(tài)的。那我們是不是要寫(xiě)一大串if…else…進(jìn)行判斷,然后寫(xiě)不同的Linq表達(dá)式:

if(根據(jù)點(diǎn)擊率排序){
    
return from post in posts
        
where post.Title ==”yuyijq”
              orderby post.Click
            select post;
}
else if(…){

}

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類型與隱式類型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


分組

在上一篇中GroupBy對(duì)應(yīng)的查詢表達(dá)式也非常麻煩,下面就來(lái)瞧瞧。我們要對(duì)博客園上所有文章做個(gè)分組,分組依據(jù)就根據(jù)博客的用戶名好了:

var dataSource = from post in posts
          group post.Title by post.UserName;

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類型與隱式類型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


聯(lián)結(jié)

Join也是個(gè)蠻復(fù)雜的表達(dá)式

如果給你一個(gè)UserId,你要根據(jù)UserId從users集合里先找出UserName,然后根據(jù)UserName找出所有下面的Post:

var dataSource = from post in posts
             join user 
in users on post.UserName equals user.UserName
             
where user.UserId = 2
             select post;

it知識(shí)庫(kù)走進(jìn)Linq-Linq to Objects(下)實(shí)例篇,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产在线精品一区二区网站免费 | 99久久精品国产免费 | AV久久久囯产果冻传媒 | 大肥婆丰满大肥奶bbw肥 | 精品欧美一区二区三区四区 | 久青草国产在视频在线观看 | 亚洲国产精品久久人人爱 | 棉签和冰块怎么弄出牛奶视频 | 第九色区av天堂 | 久久99精品久久久久久园产越南 | 99热久久视频只有精品6 | 欧美激情精品久久久久久不卡 | 国产精品自产拍在线观看中文 | 亚洲AV蜜桃永久无码精品红樱桃 | 跳蛋按摩棒玉势PLAY高H | 亚洲欧美一区二区三区四区 | 国产午夜精品久久久久九九 | 俺来也俺去也视频久久 | 久久国产精品高清一区二区三区 | 手机在线成人精品视频网 | 祺鑫WRITEAS流出来了 | 99热这里只有精品 | 免费国产久久啪久久爱 | 亚洲中文字幕在线精品 | 亚洲精品第一综合99久久 | 香蕉水蜜桃牛奶涩涩 | 亚洲国产精品无码中文在线 | 免费精品国产人妻国语 | 午夜啪啪免费视频 | 亚洲精品国产在线网站 | 热久久伊大人香蕉网老师 | 日本亚洲精品色婷婷在线影院 | 精选国产AV精选一区二区三区 | 国产乱国产乱老熟300部视频 | 99爱在线观看 | 亚洲成人综合在线 | 十8禁用B站在线看漫画 | old胖老太fat bbw青年 | 黄A无码片内射无码视频 | 色欲AV亚洲永久无码精品麻豆 | 精品熟女少妇AV免费观看 |