日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

linq to sql实战

發(fā)布時(shí)間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linq to sql实战 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Concat(連接)

連接不同集合的記錄,不會(huì)過(guò)濾相同的記錄。

(from c in Customers
select c.City).Concat
(
?
from c in Customers
?
select c.Phone
)

注意:CityPhone都是在一列當(dāng)中

2.Union(合并)

連接不同集合的記錄,會(huì)過(guò)濾相同的記錄。

(from c in Customers
select c.City).Concat
(
?
from c in Customers
?
select c.Phone
)

3.Intersect(相交)

連接不同集合的記錄,取相同的記錄。

4.Except

連接不同集合的記錄,排除相交項(xiàng)。是指第一個(gè)集合里面排除與第二個(gè)集合里相同的記錄。

?

Sql當(dāng)中的top操作和bottom操作

1.?????? take

取前幾條記錄

2.?????? skip

說(shuō)明:跳過(guò)集合的前n個(gè)元素

SqlMethods操作

LINQ to SQL語(yǔ)句中,為我們提供了SqlMethods操作,進(jìn)一步為我們提供了方便,例如Like方法用于自定義通配表達(dá)式,Equals用于相比較是否相等。

Like

from c in Customers
????????
where SqlMethods.Like(c.Country,"%c%")
????????
select c.Country

DateDiffDay

說(shuō)明:在兩個(gè)變量之間比較。分別有:DateDiffDayDateDiffHourDateDiffMillisecondDateDiffMinuteDateDiffMonthDateDiffSecondDateDiffYear?

from c in Orders
where SqlMethods.DateDiffDay(c.OrderDate,c.ShippedDate)<10
select c

Compiled Query操作

說(shuō)明:在之前我們沒(méi)有好的方法對(duì)寫(xiě)出的SQL語(yǔ)句進(jìn)行編輯重新查詢(xún),現(xiàn)在我們可以這樣做,看下面一個(gè)例子:

//1.創(chuàng)建compiled query

NorthwindDataContext db = new NorthwindDataContext();

var fn = CompiledQuery.Compile(

??? (NorthwindDataContext db2, string city) =>

??? from c in db2.Customers

??? where c.City == city

??? select c);

//2.查詢(xún)城市為London的消費(fèi)者,LonCusts集合表示,這時(shí)可以用數(shù)據(jù)控件綁定

var LonCusts = fn(db, "London");

//3.查詢(xún)城市為Seattle的消費(fèi)者

var SeaCusts = fn(db, "Seattle");

Distinct

var q = (

??? from c in db.Customers

??? select c.City )

.Distinct();

?

Where

過(guò)濾;延遲

Select

選擇;延遲

Distinct

查詢(xún)不重復(fù)的結(jié)果集;延遲

Count

返回集合中的元素個(gè)數(shù),返回INT類(lèi)型;不延遲

LongCount

返回集合中的元素個(gè)數(shù),返回LONG類(lèi)型;不延遲

Sum

返回集合中數(shù)值類(lèi)型元素之和,集合應(yīng)為INT類(lèi)型集合;不延遲

Min

返回集合中元素的最小值;不延遲

Max

返回集合中元素的最大值;不延遲

Average

返回集合中的數(shù)值類(lèi)型元素的平均值。集合應(yīng)為數(shù)字類(lèi)型集合,其返回值類(lèi)型為double;不延遲

Aggregate

根據(jù)輸入的表達(dá)式獲取聚合值;不延遲

?

Join操作

Join操作分三種:

1.???? Join

from c in Orders
????
join o in Customers on c.CustomerID equals o.CustomerID
????
select new
????{
?????? c.CustomerID,
?????? o.ContactName
????}

2.?????? SelectMany(這是一對(duì)多,多對(duì)多)

一對(duì)多

CustomersOrders是一對(duì)多關(guān)系。即OrdersCustomers類(lèi)中以EntitySet形式出現(xiàn)

from c in Customers
from o in c.Orders
select new
{
?? c.CustomerID,
?? o.OrderID
}

多對(duì)多

from c in Customers
from o in c.Orders
select new
{
?? c.CustomerID,
?? o.OrderID
}

用多對(duì)多的情況是:

一般有三個(gè)表,它們的關(guān)系是1M1

也就是說(shuō)中間那個(gè)表有外鍵,連接第一個(gè)和第三表中

自關(guān)聯(lián)關(guān)系

var q =

??? from e1 in db.Employees

??? from e2 in e1.Employees

??? where e1.City == e2.City

??? select new {

??????? FirstName1 = e1.FirstName, LastName1 = e1.LastName,

??????? FirstName2 = e2.FirstName, LastName2 = e2.LastName,

??????? e1.City

??? };

?

3.?????? group join

var q =

??? from c in db.Customers

??? join o in db.Orders on c.CustomerID

??? equals o.CustomerID into orders

??? select new

??? {

??????? c.ContactName,

??????? OrderCount = orders.Count()

};

?

let語(yǔ)句是重命名。let位于第一個(gè)fromselect語(yǔ)句之間。

var q =

??? from c in db.Customers

??? join o in db.Orders on c.CustomerID

??? equals o.CustomerID into ords

??? let z = c.City + c.Country

??? from o in ords

??? select new

??? {

??????? c.ContactName,

??????? o.OrderID,

??????? z

??? };

Composite Key(組合鍵)

var q =

??? from o in db.Orders

??? from p in db.Products

??? join d in db.OrderDetails

??????? on new

??????? {

??????????? o.OrderID,

??????????? p.ProductID

??????? } equals

??????????? new

??????????? {

??????????????? d.OrderID,

???????? ???????d.ProductID

??????????? }

??????? into details

??? from d in details

??? select new

??? {

??????? o.OrderID,

??????? p.ProductID,

??????? d.UnitPrice

??? };

說(shuō)明:使用三個(gè)表,并且用匿名類(lèi)來(lái)表示它們之間的關(guān)系。它們之間的關(guān)系不能用一個(gè)鍵描述清楚,所以用匿名類(lèi),來(lái)表示組合鍵。還有一種是兩個(gè)表之間是用組合鍵表示關(guān)系的,不需要使用匿名類(lèi)。

Order by

var q =

??? from o in db.Orders

??? where o.ShipCity == "London"

??? orderby o.Freight

??? select o;

轉(zhuǎn)載于:https://www.cnblogs.com/baixingfa/archive/2008/08/15/1269044.html

總結(jié)

以上是生活随笔為你收集整理的linq to sql实战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。