LINQ to SQL語(yǔ)句淺析
在向大家詳細(xì)介紹LINQ to SQL語(yǔ)句之前,首先讓大家了解下Select操作形式,分別為指定嵌套類型形式、LocalMethodCall形式、Distinct形式。
這篇開(kāi)始我們繼續(xù)說(shuō)LINQ to SQL語(yǔ)句,目的讓大家從語(yǔ)句的角度了解LINQ,LINQ包括LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML,但是相對(duì)來(lái)說(shuō)LINQ to SQL在我們程序中使用最多,畢竟所有的數(shù)據(jù)都要在數(shù)據(jù)庫(kù)運(yùn)行著各種操作。所以先來(lái)學(xué)習(xí)LINQ to SQL語(yǔ)句,其它的都差不多了,那么就從Select說(shuō)起吧,這個(gè)在編寫(xiě)程序中也最為常用。本篇詳細(xì)說(shuō)明一下Select操作形式,分別為指定嵌套類型形式、LocalMethodCall形式、Distinct形式。
1.嵌套類型形式:
說(shuō)明:返回的對(duì)象集中的每個(gè)對(duì)象DiscountedProducts屬性中,又包含一個(gè)集合。也就是每個(gè)對(duì)象也是一個(gè)集合類。
- var q =
- from o in db.Orders
- select new {
- o.OrderID,
- DiscountedProducts =
- from od in o.OrderDetails
- where od.Discount > 0.0
- select od,
- FreeShippingDiscount = o.Freight
- };
2.LocalMethodCall形式:
這個(gè)例子InternationalPhone調(diào)用本地方法PhoneNumberConverter
- var q = from c in db.Customers
- where c.Country == "UK" || c.Country == "USA"
- select new
- {
- c.CustomerID,
- c.CompanyName,
- Phone = c.Phone,
- InternationalPhone =
- PhoneNumberConverter(c.Country, c.Phone)
- };
PhoneNumberConverter方法如下:
- public string PhoneNumberConverter(string Country, string Phone)
- {
- PhonePhone = Phone.Replace(" ", "").Replace(")", ")-");
- switch (Country)
- {
- case "USA":
- return "1-" + Phone;
- case "UK":
- return "44-" + Phone;
- default:
- return Phone;
- }
- }
下面也是使用了這個(gè)方法
- XDocument doc = new XDocument(
- new XElement("Customers", from c in db.Customers
- where c.Country == "UK" || c.Country == "USA"
- select (new XElement("Customer",
- new XAttribute("CustomerID", c.CustomerID),
- new XAttribute("CompanyName", c.CompanyName),
- new XAttribute("InterationalPhone",
- PhoneNumberConverter(c.Country, c.Phone))
- }
- }
- }
- };
3.Distinct形式:
說(shuō)明:篩選字段中不相同的值。用于查詢不重復(fù)的結(jié)果集。生成SQL語(yǔ)句為:SELECT DISTINCT [City] FROM [Customers]
- var q = (
- from c in db.Customers
- select c.City )
- .Distinct();
語(yǔ)句描述:查詢顧客覆蓋的國(guó)家。
【編輯推薦】