国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

應用LINQ

2019-11-08 20:31:20
字體:
來源:轉載
供稿:網友

一. LINQ 的變體

1. LINQ to Objects:為任意類型的C#內存對象提供查詢,例如數組、列表和其他集合類型。上一章的所有示例都使用LINQ to Objects。也可以把本章介紹的技巧應用于LINQ的所有變體。

2. LINQ to xml:提供了XML文檔的創建和處理功能,其語法與一般查詢機制和其他LINQ變體相同。

3. LINQ to ADO.NET:.NET的ADO.NET或Active Data Objects是一個統稱,囊括了.NET中訪問數據庫(例如Microsoft SQL Server、Oracle等)中的數據的所有不同的類和庫。LINQ to ADO.NET包括LINQ to Entities、LINQ to DataSet和LINQ to SQL。 

4. LINQ to Entities:ADO.NET Entity Framework是.NET 4 中數據接口類的最新集合,Microsoft推薦使用它進行新的開發工作。本章將給Visual C#項目添加ADO.NET Entity Framework數據源,再使用LINQ to Entities查詢它。

5. LINQ to DataSet:DataSet對象在.NET Framework的第一版中引入。這個LINQ的變體允許使用LINQ輕松地查詢舊.NET數據。

6. LINQ to SQL:這是用于.NET 3.5的備用LINQ接口,主要用于Microsoft SQL Server,在.NET 4中被LINQ to Entities替代。

7. PLINQ:PLINQ或Parallel LINQ用并行編程庫擴展了LINQ to Objects,它可以使查詢同時在多核處理器上執行。

二. 給數據庫使用LINQ

1. 關系數據庫使用SQL數據庫語言(SQL表示Structured Query Language,結構化查詢語言)查詢和操作數據。

2. Visual Studio 2010和ADO.NET Entity Framework會把LINQ查詢自動轉換為SQL語句,使程序能很容易地處理C#對象。

3. 創建代碼,建立一系列匹配已有關系表結構的類和集合是很費時費力的,

但使用LINQ to SQL對象關系映射功能,可以從數據庫中自動創建匹配數據庫表的類,這樣就不必自己創建它,而可以直接開始使用類。

三. 安裝SQL Server和Northwind示例數據

1. 安裝SQL Server 2014

注意安裝過程中有一個填寫名稱的,Server name,默認是SQLEXPRESS

2. 安裝SQL 2000 Sample Databases

點擊運行.msi文件即可

四. 第一個LINQ數據庫查詢

1. 在VS里新建一個控制臺程序FirstLINQtoDatabaseQuery

2. 運行SQL Server 2014,記住這時候的Server name是ACER-PC/SQLEXPRESS,點“連接”

右鍵Databases,選擇Attach,Add,選擇到之前安裝好的SQL Server 2000 Sample Databases中的 northwnd.mdf,“OK”

注意:如果此時出現“Error:950”,可以用SQL Server打開northwnd.sql文件,運行,此時提示的錯誤給出文件的正確所在地方

把正確的文件.ldf和.mdf兩個文件拷貝到需要的文件夾里,然后再次Add即可

3. 右擊project,選擇Add New Item

4. 選擇ADO.NET Entity Data Model,名字可命名為Model1,點擊“Add”

5. 選擇第一個EF Designer from data

6. 選擇NorthwindConnectionString(Settings),點擊“Next”

注意:如果此時沒有這個選項,可選擇右邊的New Connection

在Server name中選擇或輸入之前的名稱ACER-PC/SQLEXPRESS

在Select or enter a database name中選擇Northwind

7. 選擇Tables,Finish,即可看到.edmx

注意:從第3步開始,如果按照教材上的步驟操作,如下,但是出來的結果不是需要的

3. 在VS中的Project中選擇Add New Data Source,選擇Database,選擇Dataset

4. 選擇NorthwindConnectionString(Settings),點擊“Next”

5. 選擇Tables,Finish,即可看到結果,但是是.xsd格式,不是.edmx

8. 打開主源文件Program.cs,并在Main()方法中添加如下代碼

static void Main(string[] args) { NORTHWNDEntities northWindEntities = new NORTHWNDEntities();  // 創建NORTHWNDEntities的一個實例var queryResults = from c in northWindEntities.Customers where c.Country == "USA"  // where子句把結果限制為來自美國的顧客select new { ID=c.CustomerID, Name=c.CompanyName, City=c.City, State=c.Region  // 由于該結果是來自美國的顧客,所以可以把Region重命名為State,以便更準確地顯示結果};   // select子句是一個投影,創建了一個新對象,其成員有ID、Name、City和Stateforeach (var item in queryResults) { Console.WriteLine(item); }; Console.WriteLine("Press Enter/Return to continue.."); Console.ReadLine(); }

9. 運行即可

{ ID = GREAL, Name = Great Lakes Food Market, City = Eugene, State = OR } { ID = HUNGC, Name = Hungry Coyote Import Store, City = Elgin, State = OR } { ID = LAZYK, Name = Lazy K Kountry Store, City = Walla Walla, State = WA } { ID = LETSS, Name = Let’s Stop N Shop, City = San Francisco, State = CA } { ID = LONEP, Name = Lonesome Pine Restaurant, Ci.ty = Portland, State = OR } { ID = OLDWO, Name = Old World Delicatessen, City = Anchorage, State = AK } { ID = RATTC, Name = Rattlesnake Canyon Grocery, City = Albuquerque, State = NM } { ID = SAVEA, Name = Save-a-lot Markets, City = Boise, State = ID } { ID = SPLIR, Name = Split Rail Beer & Ale, City = Lander, State = WY } { ID = THEBI, Name = The Big Cheese, City = Portland, State = OR } { ID = THECR, Name = The Cracker Box, City = Butte, State = MT } { ID = TRAIH, Name = Trail’s Head Gourmet Provisioners, City = Kirkland, State = WA } { ID = WHITC, Name = White Clover Markets, City = Seattle, State = WA } Press Enter/Return to continue... 

至此,我們創建了一個基本的LINQ to SQL查詢,可以將它為基礎,來創建更復雜的查詢。

五. 瀏覽數據庫關系

1. ADO.NET Entity Framework是強大的一個方面是可以自動創建LINQ to SQL對象,以便瀏覽數據庫中相關表之間的關系

2. 示例:要給LINQ to Entities類添加一個相關表,再添加代碼,以瀏覽數據庫中的相關數據對象,并輸出它們的值

A. 上面的示例中,在main方法中的select子句中添加orders字段,注意c.Region后面的逗號

static void Main(string[] args) { NORTHWNDEntities northWindEntities = new NORTHWNDEntities(); var queryResults = from c in northWindEntities.Customers where c.Country == "USA" select new { ID = c.CustomerID, Name = c.CompanyName, City = c.City, State = c.Region, Orders = c.Orders   // Orders是一種特殊的類型化LINQ集(System.Data.Linq.EntitySet<Order>),表示關系數據庫中兩個表之間的關系};

B. 修改foreach子句

foreach (var item in queryResults) { Console.WriteLine( "Customer: {0} {1}, {2}/n{3} orders:/tOrder ID/tOrder Date",   // 格式化字符串

// 為每個顧客在第一行設置了姓名、城市和州等占位符,接著在下一行為該顧客的訂單輸出一個列標題item.Name, item.City, item.State, item.Orders.Count   // 用方法Count()輸出顧客的訂單數); foreach (Order o in item.Orders) { Console.WriteLine("/t/t{0}/t{1}", o.OrderID, o.OrderDate); } 

// 在嵌套的foreach語句中為每一行輸出訂單ID和訂單日期}; Console.WriteLine("Press Enter/Return to continue.."); Console.ReadLine(); }

// 建立一個嵌套的foreach語句,迭代每個顧客以及每個顧客的訂單

C. 運行即可

這是輸出的最后一部分,第一部分已滾動出了控制臺窗口的頂部

Customer: Trail’s Head Gourmet Provisioners Kirkland, WA 3 orders: Order ID Order Date 10574 6/19/1997 12:00:00 AM 10577 6/23/1997 12:00:00 AM 10822 1/8/1998 12:00:00 AM Customer: White Clover Markets Seattle, WA 14 orders: Order ID Order Date 10269 7/31/1996 12:00:00 AM 10344 11/1/1996 12:00:00 AM 10469 3/10/1997 12:00:00 AM 10483 3/24/1997 12:00:00 AM 10504 4/11/1997 12:00:00 AM 10596 7/11/1997 12:00:00 AM 10693 10/6/1997 12:00:00 AM 10696 10/8/1997 12:00:00 AM 10723 10/30/1997 12:00:00 AM 10740 11/13/1997 12:00:00 AM 10861 1/30/1998 12:00:00 AM 10904 2/24/1998 12:00:00 AM 11032 4/17/1998 12:00:00 AM 11066 5/1/1998 12:00:00 AM Press Enter/Return to continue... 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平昌县| 寿光市| 崇礼县| 中山市| 新沂市| 琼结县| 伊金霍洛旗| 潮州市| 囊谦县| 阿尔山市| 翼城县| 都江堰市| 绥棱县| 阜平县| 隆安县| 沾化县| 鸡东县| 逊克县| 神木县| 方城县| 临泉县| 阿合奇县| 岑溪市| 晋江市| 岳池县| 尼勒克县| 新余市| 敦煌市| 固安县| 青神县| 错那县| 西充县| 锦屏县| 轮台县| 阿勒泰市| 内江市| 东光县| 利川市| 桐庐县| 化州市| 清新县|