出版時間:2009-07 出版社:人民郵電出版社 作者:Fabrice Marguerie,Steve Eichert,Jim Wooley 頁數(shù):416 譯者:陳黎夫
Tag標(biāo)簽:無
前言
提筆為這本書寫序并不容易,不是因為回首望去,LINO的開發(fā)歷程漫長而又千辛萬苦;也不是因為我此時此刻熱淚盈眶,心潮澎湃;也并非因為我必須字斟句酌地來總結(jié)這個傾注了我全部心血的產(chǎn)品。之所以說不容易,是因為這定會成為一本備受推崇的書,讓我很難揣摩出一個恰如其分的點睛之筆去形容它。對我而言,LINQ項目早在發(fā)布任何官方消息數(shù)年之前就已經(jīng)悄然開始了,那時我正在參與一個新的托管ADO的計劃和架構(gòu)設(shè)計。當(dāng)時,幾個非常聰明的開發(fā)者非常大膽地建議,讓我們將那些傳統(tǒng)的數(shù)據(jù)訪問API統(tǒng)統(tǒng)扔掉,而是基于對象和元數(shù)據(jù)進行設(shè)計,因為元數(shù)據(jù)和對象是最新的運行時(即Java運行時)的基石。不過這個建議并沒有被采納——傳統(tǒng)的想法占據(jù)了上風(fēng),那時我也堅定地站在了傳統(tǒng)的一方。但由此我理解了數(shù)據(jù)應(yīng)該處于任何編程系統(tǒng)的核心,而不僅僅是其附庸。有理由認(rèn)為,在基于對象的系統(tǒng)中,應(yīng)該讓數(shù)據(jù)也作為對象。不過,要實現(xiàn)這個理想,卻注定要經(jīng)歷九九八十一難。作為一名工程師,我時刻位于微軟公司各種新技術(shù)的風(fēng)口浪尖上,我們要設(shè)計新的API、創(chuàng)造新的語言特性,帶動技術(shù)向前發(fā)展。雖然很多想法從未有機會變成最終的產(chǎn)品,但每次嘗試卻都是邁向正確方向時不可或缺的一步。LINQ正是這些努力、斗爭以及教訓(xùn)的最終結(jié)晶。它凝聚著團隊成員敏銳的洞察力和對計算機科學(xué)理論及技術(shù)的深入理解,而且若是缺少了AndersHejlsberg的睿智與專注細節(jié),LINQ也不可能成為現(xiàn)實。當(dāng)然,其中還有你們大家的努力。開發(fā)者社區(qū)在論壇和博客上的討論對LINO的成形產(chǎn)生了極為深遠的影響。能夠在開發(fā)的過程中就得到如此迅捷的反饋,不亞于在漆黑一片的房間中點起了一盞明燈。更讓人高興的是看到星星之火得以燎原,許多開發(fā)者逐步成長為專家、傳道者,開始做講座、寫文章,大家相互交流,彼此啟發(fā)。
內(nèi)容概要
作為.NET上連接編程語言和數(shù)據(jù)庫、內(nèi)存對象、XML等各種類型數(shù)據(jù)之間的橋梁,LINQ引入了一種處理數(shù)據(jù)的全新理念,將查詢無縫集成至開發(fā)語言之上?!禠INQ實戰(zhàn)》第一部分介紹了LINQ技術(shù)及C#和VB為此提供的新語言特性,第二、三、四部分詳細介紹了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可擴展性、在應(yīng)用程序中使用各種LINQ功能的方法以及LINQ to DataSet?!禠INQ實戰(zhàn)》適合于使用C#和VB.NET的軟件開發(fā)者。
作者簡介
作者:(法國) 馬格里 (Marguerie.F.) (美國) 艾歇特 (Eichert.S.) (美國) 伍利 (Wooley.J.) 譯者:陳黎夫Fabrice Marguerie,微軟C#MVP,資深NET軟件架構(gòu)師,LINQ社區(qū)專家。Steve Eichert,資深程序員,擅長.NET與Ruby,有十多年編程經(jīng)驗。Jim Wooley,微軟MVP,LINQ社區(qū)專家。
書籍目錄
第一部分 從這里開始第1章 LINQ簡介1.1 LINQ是什么1.1.1 概覽1.1.2 LINQ的功能1.1.3 作為語言擴展的LINQ1.2 為什么需要LINQ1.2.1 常見問題1.2.2 解決理念上的失調(diào)1.2.3 LINQ給出解決方案1.3 LINQ的設(shè)計目標(biāo)及起源1.3.1 LINQ項目的設(shè)計目標(biāo)1.3.2 一點歷史1.4 LINQtoObjects初步:查詢內(nèi)存中的集合1.4.1 先決條件1.4.2 HelloLINQtoObjects1.5 LINQtoXML初步:查詢XML文檔1.5.1 為什么需要LINQtoXML1.5.2 HelloLINQtoXML1.6 LINQtoSQL初步:查詢關(guān)系型數(shù)據(jù)庫1.6.1 LINQtoSQL功能概覽1.6.2 HelloLINQtoSQL1.6.3 進一步了解LINQtoSQL1.7 小結(jié)第2章 C#和VB語言的增強特性2.1 新語言的增強特性一瞥2.1.1 列出當(dāng)前正在運行的所有進程2.1.2 將返回結(jié)果封裝成類2.2 隱式類型局部變量2.2.1 語法2.2.2 使用隱式類型局部變量改進實例程序2.3 對象和集合的初始化器2.3.1 引入對象初始化器的動機2.3.2 集合初始化器2.3.3 用對象初始化器改進實例程序2.4 Lambda表達式2.4.1 委托回顧2.4.2 匿名方法2.4.3 Lambda表達式介紹2.5 擴展方法2.5.1 創(chuàng)建擴展方法的示例2.5.2 更多使用LINQ標(biāo)準(zhǔn)查詢操作符的例子2.5.3 將擴展方法引入到實例程序中2.5.4 注意事項2.6 匿名類型2.6.1 使用匿名類型組合數(shù)據(jù)2.6.2 沒有名字的類型也是類型2.6.3 使用匿名類型改進實例程序2.6.4 匿名類型的限制2.7 小結(jié)第3章 LINQ構(gòu)建塊3.1 LINQ對.NET的擴展3.1.1 語言擴展回顧3.1.2 構(gòu)成LINQ基礎(chǔ)的核心元素3.2 序列3.2.1 IEnumerable接口3.2.2 迭代器回顧3.2.3 延遲查詢執(zhí)行3.3 查詢操作符3.3.1 查詢操作符是什么3.3.2 標(biāo)準(zhǔn)查詢操作符3.4 查詢表達式3.4.1 查詢表達式是什么3.4.2 編寫查詢表達式3.4.3 標(biāo)準(zhǔn)查詢操作符與查詢表達式的關(guān)系3.4.4 限制3.5 表達式樹3.5.1 Lambda表達式回顧3.5.2 表達式樹是什么3.5.3 IQueryable,另一種實現(xiàn)延遲查詢執(zhí)行的方法3.6 LINQ的程序集以及命名空間3.7 小結(jié)第二部分 查詢內(nèi)存中的對象第4章 熟悉LINQtoObjects4.1 實例程序簡介4.1.1 程序目標(biāo)4.1.2 程序功能4.1.3 業(yè)務(wù)邏輯實體4.1.4 數(shù)據(jù)庫架構(gòu)4.1.5 示例數(shù)據(jù)4.2 用LINQ操作內(nèi)存中的集合4.2.1 能夠查詢什么4.2.2 支持的操作4.3 在ASP.NET和WindowsForms中使用LINQ4.3.1 Web應(yīng)用程序中的數(shù)據(jù)綁定4.3.2 WindowsForms應(yīng)用程序中的數(shù)據(jù)綁定4.4 常用的標(biāo)準(zhǔn)查詢操作符4.4.1 約束操作符Where4.4.2 投影操作符4.4.3 Distinct操作符4.4.4 轉(zhuǎn)換操作符4.4.5 聚合操作符4.5 用不同的方式顯示內(nèi)存中的集合4.5.1 排序4.5.2 嵌套查詢4.5.3 分組4.5.4 使用連接4.5.5 分區(qū)4.6 小結(jié)第5章 超越基本的內(nèi)存數(shù)據(jù)查詢5.1 常見使用場景5.1.1 查詢非泛型集合5.1.2 按照多個條件分組5.1.3 動態(tài)查詢5.1.4 LINQtoTextFiles5.2 設(shè)計模式5.2.1 函數(shù)式創(chuàng)建模式5.2.2 ForEach模式5.3 性能分析5.3.1 選擇恰當(dāng)?shù)牧鞑僮鞣绞?.3.2 當(dāng)心立即執(zhí)行5.3.3 LINQtoObjects會降低代碼的性能嗎5.3.4 使用LINQtoObjects的代價5.3.5 性能和簡潔:魚和熊掌不可兼得嗎5.4 小結(jié)第三部分 查詢關(guān)系型數(shù)據(jù)第6章 LINQtoSQL入門6.1 走入LINQtoSQL6.1.1 創(chuàng)建對象映射6.1.2 設(shè)定DataContext6.2 通過LINQtoSQL讀取數(shù)據(jù)6.3 繼續(xù)改進查詢6.3.1 過濾6.3.2 排序和分組6.3.3 聚集6.3.4 連接6.4 操作有層級關(guān)系的對象6.5 數(shù)據(jù)加載的時機以及為何要關(guān)心這些6.5.1 延遲加載6.5.2 立即加載詳細信息6.6 更新數(shù)據(jù)6.7 小結(jié)第7章 揭開LINQtoSQL的本質(zhì)7.1 對象與關(guān)系數(shù)據(jù)的映射7.1.1 通過在類中添加屬性7.1.2 使用外部XML文件實現(xiàn)映射7.1.3 使用SqlMetal工具7.1.4 LINQtoSQL設(shè)計器7.2 將查詢表達式轉(zhuǎn)換為SQL7.2.1 IQueryable接口7.2.2 表達式樹7.3 業(yè)務(wù)實體的生命周期7.3.1 跟蹤變化7.3.2 提交變化7.3.3 操作離線數(shù)據(jù)7.4 小結(jié)第8章 LINQtoSQL高級特性8.1 處理并發(fā)修改8.1.1 悲觀式并發(fā)8.1.2 樂觀式并發(fā)8.1.3 處理并發(fā)異常8.1.4 使用事務(wù)解決沖突8.2 高級的數(shù)據(jù)庫功能8.2.1 使用SQL語句直接得到結(jié)果對象8.2.2 使用存儲過程8.2.3 用戶自定義函數(shù)8.3 改進業(yè)務(wù)邏輯層8.3.1 預(yù)編譯的查詢8.3.2 使用部分類實現(xiàn)自定義業(yè)務(wù)邏輯8.3.3 使用部分方法8.3.4 使用對象繼承8.4 LINQtoEntities簡介8.5 小結(jié)第四部分 操作XML第9章 LINQtoXML入門9.1 什么是XMLAPI9.2 為什么需要另外一種XML編程API9.3 LINQtoXML設(shè)計原則9.3.1 核心概念:函數(shù)式創(chuàng)建9.3.2 核心概念:上下文無關(guān)的XML創(chuàng)建過程9.3.3 核心概念:簡化了的名稱9.4 LINQtoXML中相關(guān)類的繼承體系9.5 在LINQ中操作XML9.5.1 加載XML9.5.2 解析XML9.5.3 創(chuàng)建XML9.5.4 使用VisualBasicXML字面量創(chuàng)建XML9.5.5 創(chuàng)建XML文檔9.5.6 向XML中添加內(nèi)容9.5.7 從XML中移除內(nèi)容9.5.8 更新XML的內(nèi)容9.5.9 操作屬性9.5.10 保存XML9.6 小結(jié)第10章 使用LINQtoXML查詢并轉(zhuǎn)換XML10.1 LINQtoXML軸方法10.1.1 Element10.1.2 Attribute10.1.3 Elements10.1.4 Descendants10.1.5 Ancestors10.1.6 ElementsAfterSelf、NodesAfterSelf、ElementsBeforeSelf和NodesBeforeSelf方法10.1.7 VisualBasic的XML軸屬性10.2 標(biāo)準(zhǔn)查詢操作符10.2.1 使用Select進行投影10.2.2 使用Where實現(xiàn)過濾10.2.3 排序和分組10.3 使用XPath查詢LINQtoXML對象10.4 轉(zhuǎn)換XML10.4.1 LINQtoXML轉(zhuǎn)換10.4.2 使用XSLT轉(zhuǎn)換LINQtoXML對象10.5 小結(jié)第11章 LINQtoXML常見場景11.1 根據(jù)XML構(gòu)建對象11.1.1 目標(biāo)11.1.2 實現(xiàn)11.2 根據(jù)對象創(chuàng)建XML11.2.1 目標(biāo)11.2.2 實現(xiàn)11.3 根據(jù)數(shù)據(jù)庫中的數(shù)據(jù)創(chuàng)建XML11.3.1 目標(biāo)11.3.2 實現(xiàn)11.4 過濾并混合從數(shù)據(jù)庫以及XML中得到的數(shù)據(jù)11.4.1 目標(biāo)11.4.2 實現(xiàn)11.5 讀取XML并更新數(shù)據(jù)庫11.5.1 目標(biāo)11.5.2 實現(xiàn)11.6 將文本文件轉(zhuǎn)換為XML11.6.1 目標(biāo)11.6.2 實現(xiàn)11.7 小結(jié)第五部分 LINQ無處不在第12章 擴展LINQ12.1 探尋LINQ的擴展機制12.1.1 LINQ各個特性是如何實現(xiàn)的12.1.2 自定義LINQ擴展能夠?qū)崿F(xiàn)什么12.2 創(chuàng)建自定義查詢操作符12.2.1 改進標(biāo)準(zhǔn)查詢操作符12.2.2 輔助或領(lǐng)域相關(guān)的查詢操作符12.3 基本查詢操作符的自定義實現(xiàn)12.3.1 回顧查詢翻譯機制12.3.2 查詢表達式模式的規(guī)范12.3.3 示例1:跟蹤標(biāo)準(zhǔn)查詢操作符的執(zhí)行過程12.3.4 限制:查詢表達式?jīng)_突12.3.5 示例2:非泛型的、領(lǐng)域相關(guān)的操作符12.3.6 示例3:非序列的查詢操作符12.4 查詢Web服務(wù):LINQtoAmazon12.4.1 LINQtoAmazon介紹12.4.2 需求12.4.3 實現(xiàn)12.5 IQueryable和IQueryProvider:LINQtoAmazon高級版本12.5.1 IQueryable和IQueryProvider接口12.5.2 實現(xiàn)12.5.3 究竟發(fā)生了什么12.6 小結(jié)第13章 應(yīng)用程序各層中的LINQ13.1 LinqBooks應(yīng)用程序概覽13.1.1 功能13.1.2 程序UI概覽13.1.3 數(shù)據(jù)模型13.2 LINQtoSQL及數(shù)據(jù)訪問層13.2.1 回顧傳統(tǒng)的三層架構(gòu)13.2.2 用專門的數(shù)據(jù)訪問層還是LINQtoSQL13.2.3 LinqBooks中對LINQtoSQL的使用13.3 LINQtoXML的使用13.3.1 從Amazon中導(dǎo)入數(shù)據(jù)13.3.2 生成RSS13.4 LINQtoDataSet的使用13.5 使用LINQtoObjects13.6 可擴展性13.6.1 自定義查詢操作符13.6.2 創(chuàng)建并使用自定義LINQ提供器13.7 展望未來13.7.1 自定義LINQ功能13.7.2 LINQtoXSD:強類型的LINQtoXML13.7.3 PLINQ:支持并行計算的LINQ13.7.4 LINQtoEntities,ADO.NETEntityFramework的LINQ接口13.8 小結(jié)第14章 使用LINQ操作DataSet14.1 LINQtoDataSet概覽14.2 DataSet回顧14.2.1 DataSet使用場景及功能14.2.2 DataSet是什么14.2.3 VisualStudio2008和.NET3.5為支持LINQtoDataSet進行的改進14.3 查詢?nèi)躅愋虳ataSet14.3.1 為DataSet加載數(shù)據(jù)14.3.2 不使用LINQ查詢DataSet14.3.3 使用LINQtoDataSet查詢?nèi)躅愋虳ataSet14.4 查詢強類型DataSet14.4.1 生成強類型的DataSet14.4.2 為強類型DataSet加載數(shù)據(jù)14.4.3 使用LINQtoDataSet查詢強類型DataSet14.5 將LINQtoDataSet查詢結(jié)果綁定至UI控件14.5.1 使用CopyToDataTable將LINQtoDataSet查詢結(jié)果復(fù)制到DataTable14.5.2 使用AsDataView實現(xiàn)雙向數(shù)據(jù)綁定14.6 在LINQtoDataSet中使用查詢操作符14.6.1 用于DataRow的Field和SetField操作符14.6.2 集合操作符以及用DataRowComparer比較DataRow14.7 小結(jié)附錄 標(biāo)準(zhǔn)查詢操作符
章節(jié)摘錄
插圖:第1章 LINQ簡介本章內(nèi)容LINQ的起源LINQ的設(shè)十目標(biāo)LINQ to Objects、LINQ to XML和LINQ to SQL初步軟件很簡單。它可以歸結(jié)為兩件事情:代碼和數(shù)據(jù)。開發(fā)軟件卻并非那么簡單,其中很重要的一項任務(wù)就是編寫處理數(shù)據(jù)的代碼。編寫代碼時,我們可以選擇不同的編程語言。為應(yīng)用程序選擇開發(fā)語言可能需要考慮業(yè)務(wù)方面的需求、開發(fā)者的偏好、開發(fā)團隊的技能提升、所使用的操作系統(tǒng)以及公司的政策等。無論選擇了哪種語言,在程序開發(fā)的某個時候你將不得不開始與數(shù)據(jù)打交道。這些數(shù)據(jù)可能來自于磁盤上的文件、數(shù)據(jù)庫中的表或網(wǎng)絡(luò)上的XML文檔,甚至是上述各項的組合。歸根結(jié)底,在任何一個軟件項目中,都需要管理數(shù)據(jù)。鑒于處理數(shù)據(jù)的操作在軟件開發(fā)中無所不在,我們都希望一些功能強大的軟件開發(fā)平臺,如.NET Framework,能夠提供一些簡單的處理數(shù)據(jù)方法。.NET的確對操作數(shù)據(jù)提供了廣泛的支持,不過仍有一些可以改進之處,例如更深層次的語言和數(shù)據(jù)集成。這也正是LINO to objects、LINQ to XML和LINQ to SQL的價值所在。
媒體關(guān)注與評論
本書作者是LINQ社區(qū)中的重要成員,他們在書中展示了這一技術(shù)的精髓……快去享受這一盛宴吧?! 狹att Warren,微軟主架構(gòu)師,LINQ之父LINQ方面的杰作!深入、全面、客觀,令人欲罷不能。強烈推薦! ——Patrick Smacchia,微軟MVP,《C#和.NET 2.0 實戰(zhàn)》作者
編輯推薦
《LINQ實戰(zhàn)》:微軟MVP嘔心瀝血之作,LINQ圣經(jīng),深入全面,引人入勝,豐富實例,兼顧C#和VB.NET語言?!禠INQ實戰(zhàn)》內(nèi)容全面詳細,幾乎涵蓋了所有技術(shù)要點。對于LINQ提供的各種特性,從客觀的角度解釋其優(yōu)缺點,使讀者能夠根據(jù)具體情況做出選擇。此外,還講解了LINQ的可擴展性,可用于更高級的數(shù)據(jù)處理。全書組織結(jié)構(gòu)合理。行文流暢,使讀者如同置身于一次技術(shù)旅行。在深入透徹的講解中恰到好處地運用實例,對同一主題分別給出C#和VB.NIE實例,并在實例的關(guān)鍵點給出注釋,真正達到了化繁為簡的境界。LINQ是微軟.NET軟件開發(fā)平臺上的一項突破性創(chuàng)新技術(shù),它在面向?qū)ο笳Z言與各種數(shù)據(jù)源之間架設(shè)了一座高效的橋梁,大大降低了軟件開發(fā)的復(fù)雜度。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載