日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linq to sql实战

發布時間:2025/7/14 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linq to sql实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Concat(連接)

連接不同集合的記錄,不會過濾相同的記錄。

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

注意:CityPhone都是在一列當中

2.Union(合并)

連接不同集合的記錄,會過濾相同的記錄。

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

3.Intersect(相交)

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

4.Except

連接不同集合的記錄,排除相交項。是指第一個集合里面排除與第二個集合里相同的記錄。

?

Sql當中的top操作和bottom操作

1.?????? take

取前幾條記錄

2.?????? skip

說明:跳過集合的前n個元素

SqlMethods操作

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

Like

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

DateDiffDay

說明:在兩個變量之間比較。分別有:DateDiffDayDateDiffHourDateDiffMillisecondDateDiffMinuteDateDiffMonthDateDiffSecondDateDiffYear?

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

Compiled Query操作

說明:在之前我們沒有好的方法對寫出的SQL語句進行編輯重新查詢,現在我們可以這樣做,看下面一個例子:

//1.創建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.查詢城市為London的消費者,LonCusts集合表示,這時可以用數據控件綁定

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

//3.查詢城市為Seattle的消費者

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

Distinct

var q = (

??? from c in db.Customers

??? select c.City )

.Distinct();

?

Where

過濾;延遲

Select

選擇;延遲

Distinct

查詢不重復的結果集;延遲

Count

返回集合中的元素個數,返回INT類型;不延遲

LongCount

返回集合中的元素個數,返回LONG類型;不延遲

Sum

返回集合中數值類型元素之和,集合應為INT類型集合;不延遲

Min

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

Max

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

Average

返回集合中的數值類型元素的平均值。集合應為數字類型集合,其返回值類型為double;不延遲

Aggregate

根據輸入的表達式獲取聚合值;不延遲

?

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(這是一對多,多對多)

一對多

CustomersOrders是一對多關系。即OrdersCustomers類中以EntitySet形式出現

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

多對多

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

用多對多的情況是:

一般有三個表,它們的關系是1M1

也就是說中間那個表有外鍵,連接第一個和第三表中

自關聯關系

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語句是重命名。let位于第一個fromselect語句之間。

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

??? };

說明:使用三個表,并且用匿名類來表示它們之間的關系。它們之間的關系不能用一個鍵描述清楚,所以用匿名類,來表示組合鍵。還有一種是兩個表之間是用組合鍵表示關系的,不需要使用匿名類。

Order by

var q =

??? from o in db.Orders

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

??? orderby o.Freight

??? select o;

轉載于:https://www.cnblogs.com/baixingfa/archive/2008/08/15/1269044.html

總結

以上是生活随笔為你收集整理的linq to sql实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。