LINQ入門與套用

LINQ入門與套用

《LINQ入門與套用》是王的強所作的一本圖書,該書系統、全面地介紹了微軟最新推出的LINQ數據開發技術。《LINQ入門及套用》採取以實踐為主、以理論為輔的方法,首先對C#新改進的一些語法做了詳細的剖析,讓讀者領會C#語法的新特點,為後面的學習打下基礎,然後對LINQ各個子句和組件進行了實例講解,通過一個個生動的示例,帶領讀者由淺入深、系統地學習和掌握LINQ技術。

基本介紹

  • 書名:LINQ入門與套用
  • 作者:王的強
  • ISBN:9787302200253
  • 頁數:427
  • 出版社:清華大學出版社
  • 出版時間:2009-5-1
  • 開本:16開
前言,作者簡介,序言,目錄,編輯推薦,媒體評論,

前言

2008年是不平凡的一年,對中國人來說這一年發生了很多事情,從年初的冰凍雨雪災害,到隨後的汶川特大地震,再到北京奧運會的榮耀輝煌,及至歲末年尾的世界金融危機衝擊,中國度過了波瀾壯闊的一年。
IT業界在2008年,也有很多讓人激動的事情發生,例如微軟公司在2008年早些時候,正式發布了Visual Studio 2008 和 .NET Framework 3.5 版,對 .NET 做了很多重大的改進,其中 LINQ 技術尤為耀眼。
LINQ多項革命性特徵必將引領信息處理技術走向新的高度,所以眾多讀者期望能更加深入、透徹地了解LINQ所帶來的各種編程優勢對其自身開發工作的促進作用。該書的立意是從理論聯繫實際出發,通過講解使用LINQ技術在解決開發過程中經常遇到的常見問題入手,從而更好的理解LINQ技術,為讀者在將來的生產環境中使用LINQ技術打下基礎。
本書共7章,具體內容如下:
第1章 LINQ介紹
敘述了LINQ的一些概念和使用LINQ編程的優勢,還簡單介紹了開發LINQ的編程環境Visual Studio 2008的安裝和配置。在敘述中,用三個實例引領讀者了解LINQ to Objects、LINQ to ADO.NET、LINQ to XML,同時對實例的開發步驟,都進行了非常仔細地講解,目的就是讓讀者儘快熟悉Visual Studio 2008開發環境,為後面的學習打下基礎。
第2章 C#語言新特性及相關知識
首先敘述了.NET各個版本之間的關係,然後分別講解了C# 語言的一些新特性。在講解中,盡力避免晦澀難懂的理論敘述,通過大量有趣、實用的例子,演示了C# 語言的自動屬性、可空類型、泛型、委託、疊代器、隱式類型局部變數、對象集合初始化器、匿名類型、擴展方法、匿名方法、Lambda表達式等特性。最後的綜合實例,更是充分利用這些特性,帶給讀者關於C# 語言的銳利體驗。
第3章 LINQ 基本子句介紹
這一章講述了LINQ表達式的from子句、where子句、select子句、group子句、into子句、排序子句、let子句、join子句等基本子句,這些子句都是LINQ標準查詢運算符的一部分。
第4章 用於集合、檔案、字元串對象的LINQ(LINQ to Objects)
通過大量實例講解了,LINQ to Objects的查詢運算符,LINQ to Objects是LINQ技術的基礎,掌握這些查詢運算符也就掌握了LINQ技術的核心操作。本章最後的綜合實例,演示LINQ在ASP.NET和WINFORM下的運用,並且順便讓讀者感受了一下ASP.NET中新增的Ajax技術。
第5章 用於資料庫訪問的LINQ(LINQ to SQL)
通過一些實例講解並演示了如何使用Microsoft Visual Studio 2008設計器、手動方式、XML檔案建立LINQ to SQL的實體對象;介紹了用於映射資料庫及進行相關操作的DataContext對象、運算元據庫單一表格的Table<TEntity>類、運算元據庫一對多關係表格的EntitySet<TEntity>類。掌握這些知識後,便可以熟練使用LINQ to SQL進行資料庫開發。本章最後的綜合實例,使用LINQ to SQL操作一對多關係的表格,演示了實體對象的序列化與反序列化,講解了如何正確綁定DataGridView的數據源等,相信通過這個實例,讀者對LINQ to SQL的認識會更加深入。
第6章 用於XML訪問的LINQ(LINQ to XML)
通過一些實例講解並演示了LINQ to XML的一些概念及基本操作,使用XML軸方法處理XML元素,使用LINQ表達式處理XML元素,如何修改、變造、輸出XML樹,其中通過6.4.5小節變造XML樹的實例,讀者可以體驗到LINQ的強大功能。本章最後的綜合實例,使用LINQ to SQL操作一對多關係的表格,統計訂單數據,之後使用LINQ to XML將實體對象轉換為XML節點,實現了一個較為完整的RSS生成類。
第7章 綜合套用實例:商品管理解決方案
在企業開發中,大多都遵從多層結構開發方式。例如:一個解決方案,需要有構建持久保存數據的數據層、實現商業邏輯的邏輯層、和用戶溝通、交換數據的表示層,這就是一個典型的3層結構系統。那種生成界面之後,雙擊控制項直接進行編碼的方式,是無法適應企業開發中,複雜、繁瑣、不斷重構的環境。本章的解決方案實例,分為3個項目來實現一個數據層、一個商店模型、一個線上商品瀏覽頁面、一個收銀台桌面程式等。在DLL類庫項目中,演示了LINQ to SQL技術;在WINDOWS窗體項目中,演示了LINQ to Objects技術;在ASP.NET項目中,演示了LINQ to XML技術。
本書採用實踐為主、理論為輔的方法,首先對C# 新改進的一些語法做了詳細地剖析,讓讀者領會C# 語法的新特點為後面的學習打下基礎,然後對 LINQ 各個子句和組件進行了實例講解,通過一個個生動的示例帶領讀者由淺入深系統得學習和掌握LINQ技術。
本書對開發步驟的詳細介紹,有助於讀者更好地掌握Microsoft Visual Studio 2008開發環境,用好工具,往往會有事半功倍的效果。
本書各個章節中的綜合實例,除了充分演示了LINQ技術外,還放棄了界面與邏輯混合的初級方式,極力引導讀者適應面向對象的開發方式。

作者簡介

王的強,高級軟體工程師,曾先後參與主導過青島廣播電視學會期刊編輯管理系統、中國平安保險公司青島營業區保單統計系統、韓國KCC公司定製組件開發以及青島縱橫紡織品集團公司等多家企業的ERP系統、大型商業網站的開發及管理工作,對新技術的實際套用經驗豐富,目前作為一家網路公司的執行董事,負責開發指導及管理工作,有自己的工作室,主要從事新技術實驗、套用研究、企業定製開發等工作。

序言

IT業界在2008年有很多讓人激動的事情發生,例如微軟公司在2008年早些時候,正式發布了VisualStudio2008和.NETFramewor.k3.5版,對.NET做了很多重大的改進,其中UNQ技術尤為耀眼。
LINO的多項革命性特徵必將引領信息處理技術走向新的高度。所以眾多讀者期望能更加深入、透徹地了解LINO所帶來的各種編程優勢及其對開發工作的促進作用,本書以理論聯繫實際的講解風格,通過介紹如何使用LINO技術解決開發過程中經常遇到的問題,來幫助讀者更好地理解LINQ技術,為在生產環境中使用LINQ技術打下基礎。
本書共分7章,主要內容說明如下。
第1章:LINQ介紹。
敘述LINO的一些概念和使用LINQ編程的優勢,還簡單介紹開發LINQ的編程環境VisualStudio2008的安裝和配置。在敘述中,用三個實例引領讀者了解LINQtoObjects、LINQtoADO.NET、LINQtoXML,同時對實例的開發步驟都進行非常細緻的講解,目的是讓讀者儘快熟悉VisualStudio2008開發環境,為後面的學習打下基礎。

目錄

第1章 LINQ介紹
1.1 什麼是LINQ
1.2 為什麼要用LINQ
1.3 搭建LINQ開發環境
1.3.1 安裝 Visual Studio 2008
1.3.2 配置 Visual Studio 2008
1.4 初識LINQ技術
1.4.1 初識LINQ to Objects
1.4.2 初識 LINQ to ADO.NET
實例:個人電話薄
1.4.2初識LINQ to XML
實例:RSS DOM查看器
1.5小結
第2章 C#語言新特性及相關知識
2.1 .NET各個版本之間的關係
2.2 C#語言的新特性
2.2.1自動屬性和屬性訪問器的保護級別
2.2.2可空類型
實例:值類型也可以為null
2.2.3泛型
實例:實現一個簡單的泛型類
實例:ArrayList和List<T>執行效率
2.2.4委託
實例:委託的多種樣式
實例:自定義事件及其事件數據類和利用委託跨執行緒的數據傳遞
2.2.5 疊代器與yield關鍵字
實例:使用yield關鍵字的疊代器
2.2.6隱式類型的局部變數
實例:反編譯查看用var關鍵字定義的變數類型
2.2.7對象和集合初始化器
對象初始化器
集合初始化器
2.2.8匿名類型
實例:不用寫名字也可以創建一個類型
2.2.9擴展方法
實例:不用繼承對象給對象增加方法
2.2.10 匿名方法和Lamdba表達式
實例:創建匿名方法
實例:創建Lambda表達式
實例:Lambda表達式樹
2.3 綜合實例C Sharp高亮編輯及編譯運行器
2.4小結
第3章 LINQ 基本子句介紹
3.1 概述
3.2 from子句
3.2.1 單個from子句
實例:使用LINQ查詢ArrayList
3.2.2 複合 from 子句
實例:複合from子句查詢客戶多個電話號碼中的號碼
3.2.3 多個 from 子句
實例:多個from子句完全交叉聯接的電話表
3.3 where子句
3.3.1 常見的where子句查詢
3.3.2 在where子句中使用自定義函式
3.3.3 動態謂詞的篩選
3.4 select子句
3.4.1 輸出查詢結果
3.4.2 對查詢結果進行投影
3.5 group子句
3.5.1 IGrouping<TKey, TElement>泛型接口
3.5.2 分組查詢
3.6 into 子句
3.7 排序子句
3.7.1 OrderBy和OrderByDescending
3.7.2 ThenBy和ThenByDescending
3.8 let子句
3.9 join子句
3.10 小結
第4章 用於集合、檔案、字元串對象的LINQ(LINQ to Objects)
4.1 LINQ標準查詢運算符概述
4.2 Enumerable類介紹
4.3 用於延期執行的Enumerable類方法成員
4.3.1 Take方法
實例:返回序列的前N個元素
4.3.2 TakeWhile方法
實例:返回序列符合條件的元素1
實例:返回序列符合條件的元素2
4.3.3 Skip方法
實例:跳過序列的前N個元素
4.3.4 SkipWhile方法
實例:跳過序列符合條件的元素1
實例:跳過序列符合條件的元素2
4.3.5 Take、TakeWhile、Skip、SkipWhile小結
實例:Take和Skip實現分頁
4.3.6 Reverse方法
實例:反向顯示字元串
4.3.7 Distinct方法
實例:去掉序列中重複的元素
實例:使用自定義比較器過濾序列中重複的元素
4.3.8 Union方法
實例:合併2個數組並去掉重複元素
實例:使用自定義比較器合併2個數組並去掉重複的元素
4.3.9 Concat方法
實例:連線2個數組
4.3.10 Intersect方法
實例:找出2個數組中相同的元素
實例:使用自定義比較器找出2個數組中相同的元素
4.3.11 Except方法
實例:找出2個數組中不同的元素
實例:使用自定義比較器找出2個數組中不同的元素
4.3.12 Range方法
實例:生成從18到26的頁碼序列
4.3.13 Repeat方法
實例:生成含有5個相同類型元素的序列
4.3.14 Empty方法
實例:生成String類型的空序列
4.3.15 DefaultIfEmpty方法
實例:檢測多種類型序列是否為空
實例:使用自定義默認值的DefaultIfEmpty方法
4.3.16 Cast方法
實例:將ArrayList序列轉換成泛型序列
4.3.17 OfType方法
實例:用OfType方法轉換ArrayList序列轉換成泛型序列
4.3.18 AsEnumerable方法
實例:將IQueryable類型轉換為IEnumerable類型
4.4 用於立即執行的Enumerable類方法成員
4.4.1 ToArray方法
實例:將序列轉換為數組
4.4.2 ToList方法
實例:將序列轉換為泛型List<T>
4.4.3 ToDictionary方法
實例:將泛型List<GusetInfo>轉換為Dictionary<string,GusetInfo>類型
實例:使用自定義比較器將泛型List<GusetInfo>轉換為Dictionary<string,GusetInfo>類型
實例:泛型List<GusetInfo>轉換為Dictionary<stirng,string>類型
實例:使用自定義比較器將泛型List<GusetInfo>轉換為Dictionary<stirng,string>類型
4.4.4 ToLookup方法
實例:將泛型List<GusetInfo>轉換為Lookup<string,GusetInfo>類型
實例:使用自定義比較器將泛型List<GusetInfo>轉換為Lookup<string,GusetInfo>類型
實例:泛型List<GusetInfo>轉換為Lookup<stirng,string>類型
實例:使用自定義比較器將泛型List<GusetInfo>轉換為Lookup<stirng,string>類型
4.4.5 SequenceEqual方法
實例:比較2個序列是否相等
實例:使用自定義比較器比較2個序列是否相等
4.4.6 First方法
實例:返回序列的第一個元素
實例:輸出序列中第一個符合條件的元素
4.4.7 FirstOrDefault方法
實例:返回空序列的第一個元素
實例:輸出序列中第一個符合條件的元素
4.4.8 Last方法
實例:返回序列的最後一個元素
實例:輸出序列中最後一個符合條件的元素
4.4.9 LastOrDefault方法
實例:返回空序列的最後一個元素
實例:輸出序列中最後一個符合條件的元素
4.4.10 Single方法
實例:返回序列唯一的元素
實例:輸出序列中唯一符合條件的元素
4.4.11 SingleOrDefault方法
實例:返回空序列的唯一元素
實例:輸出序列中唯一符合條件的元素
4.4.12 ElementAt方法
實例:返回指定索引位置上的元素
4.4.13 ElementAtOrDefault方法
實例:返回指定索引位置上的元素
4.4.14 All方法
實例:檢測全部元素是否符合條件
4.4.15 Any方法
實例:檢測序列是否包含元素
實例:使用自定義條件檢測序列是否包含元素
4.4.16 Contains方法
實例:檢測指定的元素是否存在
實例:使用自定義比較器檢測指定的元素是否存在
4.4.17 Count方法
實例:獲取序列元素個數
實例:獲取符合自定義條件的元素個數
4.4.18 LongCount方法
實例:獲取序列元素個數
實例:獲取符合自定義條件的元素個數
4.4.19 Aggregate方法
實例:將數組組合為字元串
實例:有初始值的數組累加
實例:有初始值並且經過轉換的數組累加
4.4.20 Sum方法
1、普通類型序列求和
2、可空類型序列求和
3、對序列元素使用轉換函式求和
實例:使用Sum方法求和
4.4.21 Average方法
1、普通類型序列求平均值
2、可空類型序列求平均值
3、對序列元素使用轉換函式求平均值
實例:使用Average方法求平均值
4.4.22 Min方法
1、普通類型序列求最小值
2、可空類型序列求最小值
3、對序列元素使用轉換函式求最小值
4、對泛型序列求最小值
實例:使用Min方法求最小值
4.4.23 Max方法
1、普通類型序列求最大值
2、可空類型序列求最大值
3、對序列元素使用轉換函式求最大值
4、對泛型序列求最大值
實例:使用Max方法求最大值
4.5綜合實例
4.5.1使用Ajax技術的ASP.NET項目:敏感詞過濾
4.5.2 WINFORM項目:檔案查找和分組
4.5.3 小結
第5章 用於資料庫訪問的LINQ(LINQ to SQL)
5.1 LINQ to SQL概述
5.2 對象模型的建立
5.2.1資料庫對象建立
實例:資料庫對象的建立
5.2.2使用Visual Studio 2008建立實體類
實例:使用LINQ TO SQL設計器建立實體類
5.2.3手動建立實體類
實例:手動建立實體類
5.2.4 使用XML映射檔案
實例:使用XML映射檔案建立實體類
5.3 用於資料庫連線的DataContext對象的成員介紹
5.3.1 DataContext構造函式
實例:連線到SQL Server、SQL Server Express
5.3.2 CreateDatabase方法
實例:創建SQL Server Express資料庫檔案
5.3.3 DatabaseExists方法
實例:檢測SQL Server Express資料庫是否存在
5.3.4 DeleteDatabase方法
實例:刪除SQL Server Express資料庫
5.3.5 GetTable方法
實例:使用GetTable方法返回記錄
5.3.6 SubmitChanges方法
實例:修改資料庫內容
5.3.7 GetChangeSet方法
實例:獲取剛剛修改過的對象
5.3.9 Refresh方法
實例:刷新實體對象
5.3.10 ExecuteQuery方法
實例:使用SQL命令返回實體對象
實例:使用SQL命令返回實體對象2
5.3.11 ExecuteCommand方法
實例:使用SQL命令添加資料庫記錄
5.3.12 Translate方法
實例:取得並轉換多個查詢結果
實例:取得並轉換單個查詢結果
實例:取得並轉換單個查詢結果2
5.3.13 ChangeConflicts屬性
5.3.14 Transaction屬性
5.3.15 ObjectTrackingEnabled屬性
5.3.16 Log屬性
實例:用自定義控制項顯示LINQ to SQL產生的SQL語句
5.4用LINQ運算元據庫單一表格
5.4.1 Table<TEntity> 類
5.4.2 Attach方法
實例:使用Attach方法附加實體
實例:使用Attach方法附加實體並同步資料庫1
實例:使用Attach方法附加實體並同步資料庫2
5.4.3 AttachAll方法
實例:使用AttachAll方法附加實體
實例:使用AttachAll方法附加實體並同步資料庫
5.4.4 GetOriginalEntityState方法
實例:使用GetOriginalEntityState方法返回原始實體
5.4.5 GetModifiedMembers方法
實例:使用GetModifiedMembers方法返回實體成員的原始值
5.4.6 InsertOnSubmit方法
實例:使用InsertOnSubmit方法添加數據
5.4.7 InsertAllOnSubmit方法
實例:使用InsertAllOnSubmit方法添加數據
5.4.8 DeleteOnSubmit方法
實例:使用DeleteOnSubmit方法刪除數據
5.4.9 DeleteAllOnSubmit方法
實例:使用DeleteAllOnSubmit方法刪除數據
5.5 用LINQ運算元據庫一對多表格
5.5.1 EntitySet<TEntity>類
5.5.2 Add方法
實例:使用Add方法添加數據
5.5.3 AddRange方法
實例:使用AddRange方法批量添加數據
5.5.4 Insert方法
實例:將實體插入在倒數第2的索引位置上
5.5.5 Remove方法
實例:使用Remove方法刪除數據
5.5.6 RemoveAt方法
實例:使用RemoveAt方法刪除數據
5.5.7 Clear方法
實例:使用Clear方法刪除數據
5.6綜合實例:客戶產品訂單處理系統
5.6.1 數據類
5.6.2序列化與反序列化
5.6.3控制器類
5.6.4界面的數據綁定
5.7小結
第6章 用於XML訪問的LINQ(LINQ to XML)
6.1 LINQ to XML概述
6.2 LINQ to XML 基本操作
6.2.1創建XML文檔
實例:從INTERNET裝載XML文檔構建XDocument
6.2.2創建XML元素
實例:給XDocument對象增加元素
6.2.3創建XML屬性
實例:使用XAttribute對象創建元素的屬性
6.2.4創建XML注釋
實例:使用XComment創建元素的注釋
6.2.5創建XML聲明
實例:使用XDeclaration給XDocument對象增加聲明
6.2.6創建XML文檔類型
實例:使用XDocumentType給XDocument對象增加文檔類型
6.2.7創建XML處理指令
實例:使用XProcessingInstruction給XDocument對象增加處理指令
6.2.8創建XML CData數據
實例:使用XCdata給元素增加CData數據
6.2.9創建XML命名空間
實例:使用XNamespace給元素增加命名空間
6.3使用軸方法處理XML元素
6.3.1 XElement類
實例:構建XElement
6.3.2檢索元素的軸方法
實例:使用Element檢索子元素
實例:使用Elements、Descendants方法檢索子元素集合
實例:使用Ancestors、AncestorsAndSelf方法檢索父元素集合
實例:使用ElementsBeforeSelf、ElementsBeforeSelf方法檢索元素集合
實例:檢索、獲取元素的值
6.3.3 添加元素的軸方法
實例:使用Add、AddAfterSelf、AddBeforeSelf、AddFirst方法添加子元素
6.3.4刪除元素的軸方法
實例:使用Remove、RemoveAll方法刪除元素
6.3.5替換元素的軸方法
實例:使用ReplaceWith方法替換元素
實例:使用ReplaceAll方法替換元素的子節點
6.3.6根據指定的值自動添加、刪除、修改子元素
實例:使用SetElementValue處理子元素
6.3.7獲取元素屬性的軸方法
實例:使用Attributes方法獲取元素的屬性集合
實例:使用Attribute方法獲取元素的屬性
6.3.8替換元素屬性的軸方法
實例:使用ReplaceAttributes替換元素的屬性
6.3.9刪除元素的屬性的軸方法
實例:使用RemoveAttributes刪除元素的屬性
6.3.10根據指定的值自動添加、刪除、修改元素的屬性
實例:使用SetAttributeValue處理元素的屬性
6.3.11處理批註的軸方法
實例:使用AddAnnotation方法給元素添加批註
實例:使用Annotations方法獲取元素的批註集合
實例:使用RemoveAnnotations方法刪除元素的批註
6.4使用LINQ表達式處理XML元素
6.4.1篩選XML元素
實例:編寫複雜LINQ表達式查詢元素
6.4.2對XML元素進行排序
實例:使用LINQ表達式對XML元素排序
6.4.3對XML元素進行計算
實例:使用LINQ表達式計算XML元素
6.4.4 剔除XML樹中符合條件的元素
實例:使用LINQ表達式剔除XML樹中的元素
6.4.5 變造XML樹
實例:使用LINQ表達式變造XML樹
實例:使用LINQ查詢運算符變造XML樹
6.5使用LINQ to XML序列化XML樹
6.5.1輸出XML樹到字元串
實例:輸出到字元串
6.5.2輸出XML樹到TextWriter對象
實例:輸出到TextWriter
6.5.3輸出XML樹到檔案
實例:輸出到檔案
6.6綜合實例:生成並輸出RSS聚合內容
6.6.1數據類
6.6.2 建立RSS 對象
6.6.3控制器類
6.6.4界面
6.6.5 運行結果
6.7小結
第7章 綜合套用實例:商品管理解決方案
7.1概述
7.2資料庫設計
7.3使用LINQ to SQL的數據層、商品管理模型
7.3.1建立數據層
7.3.2收銀台及商店模型
7.4 WINFORM項目
7.4.1收銀台界面自定義控制項
7.4.2控制台窗體
7.5 ASP.NET項目
7.5.1自定義Web控制項
7.5.2商品查詢、分頁顯示頁面
7.5.3 Webservice數據耦合層
7.6小結

編輯推薦

本書介紹微軟最前沿的數據查詢編程技術,內容由160個知識點實例加5個綜合套用案例組成,光碟中提供了涉及到的全部示例源程式項目,對於將要從事正規商業開發的人員有很強的示範性和指導作用。

媒體評論

青島縱橫紡織品集團公司,總經理、ERP總設計師 趙洪濤:對於我們企業的ERP系統,我經常有一些好的想法,要程式設計師去實現,但開發進度不能令我滿意。最近,開始大規模使用LINQ技術,程式設計師可以更加專注於業務邏輯的設計,避免了一些繁瑣的編碼工作,進度情況得到了明顯的改善。
國內著名軍事網站,鼎盛軍事站長 盧劍鋒:我們網站有些功能,是使用LINQ技術開發的,不論操作XML還是字元串或者資料庫,代碼都非常簡練,開發效率成倍提高。
青島鈦悅科技有限公司,技木總監 王文偉:LINQ技術改變了以前的一些代碼編寫方式,結合Microsoft Visual Studio 2008,大幅度降低了代碼出錯機率。
西安聖華電子工程有限責任公司,項目經理 劉驍獎:客戶的需求總是不斷地變化,我們一直期望能有種新技術,可以更加簡便、快速地處理XML文檔和資料庫。LINQ技術的出現實現了這個願望,它提供了無與倫比的編程體驗,使我們能輕鬆配合客戶的需求變化。

相關詞條

熱門詞條

聯絡我們