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

走進Linq--Linq橫空出世篇

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

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

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

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

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

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

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

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

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


某日編程大師云游到某處,見一剛畢業不久學過兩天C#和兩天SQL的coder在那里發牢騷,為啥我要寫這么多for,這么多if才能查詢出我需要的數據,為啥我不能像SQL那樣,發送一條命令告訴數據庫我需要啥樣的數據,它就給我返回來。

編程大師如是說:傻小子,像SQL那叫第四代編程語言,常存在于象牙塔和研究所里面的學究語言,還有個高雅的名字:函數編程。它只需要你告訴它要什么,而不需要告訴它怎么做。而你使用的C#語言屬于命令式編程,你必須像發送命令一樣一步步的告訴你的機器怎么做。

發牢騷的coder回了一句:不懂,我只是想不通,數據庫能做這樣的處理,為啥C#這么牛的語言不能呢。編程大師心里想著:這是不可能的事情,因為C#它是強類型語言,)*&)(&)*)()*&%&%&^(后面省去200字)。

天色還未晚,編程大師就急匆匆的回家了,他心里一直記著那位發牢騷的coder的話:為什么不能,為什么不能。

晚上,編程大師做了一個夢,一個奇怪的夢,他的師傅“白眉”只說了三個字母:DSL。

編程大師想著,DSL,領域專用語言,師傅要對我說什么呢,難道和今天我遇見的事有關?

上面這段文字是一段調侃,調節一下氣氛,呵呵。

我覺得Linq就是一種DSL,在C#等常規語言上抽象起來的,面向數據處理領域的特定“語言”,當然,它的根基還是這些常規語言。

select,from,where,group等關鍵字本來只是在SQL里出現,現在把它們引入到C#這些常規編程語言中。

那C#等是如何做到的呢?是在CLR底層支持的么?不是。既然“編譯器”可以將C#編譯成MSIL,那為什么編譯不能干更多一點事情?將這些為了領域編程而出現關鍵字編譯成原始語法。

下面還是從實例來說明吧:

我們有一個圖書類Book,先已經有一個填充有數據的Book集合,我們需要從這個集合里查找出單價小于50的書籍:

using System;
/// 
/// 圖書類
/// 

public class Book
{
    
/// 
    
/// 圖書名稱
    
/// 

    public string Title getset; }
    
/// 
    
/// 單價
    
/// 

    public float Price getset; }
    
/// 
    
/// 作者
    
/// 

    public string Author getset; }
    
/// 
    
/// ISBN號
    
/// 

    public string ISBN getset; }
}

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

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

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

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

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

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

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

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

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


如是我可以寫這樣的代碼:

public static class Helper
{
    
public static IList<Book> SearchBookByPrice()
    {
         IList
<Book> books = //..//初始化一個Book集合
         IList<Book> results = new List<Book>();
        
foreach(Book book in books)
        {
            
if(book.Price < 50)
            {
                   results.Add(book);
            }
        }
        
return results;
    }
}  

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

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

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

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

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

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

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

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

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


我們將查詢條件使用委托解決了,只要傳遞一個接收Book作為參數,返回bool值的方法進去就可以查詢滿足條件的書籍了,但是,為了這個委托,我們還得先定義一個新方法,然后。。。。太麻煩了,為此C# 2.0為我們提供了匿名方法,專門針對這些只有“一句話方法”:

IList<Book> results = Helper.SearchBook(delegate(Book book) { return book.Title == "yuyi"; });

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

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

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

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

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

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

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

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

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq


仔細比較一下這個實現與剛才的實現有何不同(我們還給它起了一個更好聽的名字Where,是不是和SQL更像了),現在我們可以這樣調用了:

IList<Book> results = books.Where(book => book.Title == "yuyi");

it知識庫走進Linq--Linq橫空出世篇,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产69精品久久久久乱码 | 精品国产在线手机在线 | 久久爱狠狠综合网 | 久久亚洲免费视频 | 特级淫片大乳女子高清视频 | 香蕉AV福利精品导航 | 精品久久99麻豆蜜桃666 | 天天爽夜夜爽夜夜爽 | 1313久久国产午夜精品理论片 | 国产精品一区二区在线观看 | 米奇在线8888在线精品视频 | 亚洲精品久久久无码一区二区 | 激情内射亚州一区二区三区爱妻 | 香蕉精品国产自在现线拍 | 午夜想想爱午夜剧场 | 如懿传免费观看在线全集 | 小p孩玩成年女性啪啪资源 小777论坛 | 最近2019中文字幕免费版视频 | 嗯啊快拔出来我是你老师视频 | 麻豆精品乱码WWW久久密 | 99久久免费精品国产免费 | 摸董事长的裤裆恋老小说 | 综合亚洲桃色第一影院 | 亚洲精品乱码久久久久久v 亚洲精品乱码电影在线观看 | 国产99青草全福视在线 | 国产69精品久久久熟女 | 暖暖 视频 在线 观看 高清 | 亚洲免费三区 | 亚洲精品影院久久久久久 | 亚州AV中文无码乱人伦在线 | 国产精品爆乳尤物99精品 | 亚洲不卡高清免v无码屋 | 日韩欧美一区二区三区在线 | 欧美大片免费观看 | 日本一本二本三区免费免费高清 | 久久精品18 | 伊人精品久久久大香线蕉99 | 羞羞漫画在线播放 | 百性阁综合社区 | 女人18毛片| 亚洲精品久久久久69影院 |