接觸 linq 也有很長的一段時間了,有些在 sql 語句中用的很順手的東西在 linq 中卻不知道如何實現了,最近遇到了乙個問題,在 linq 的 where 條件式中要如何使用 in 與 not in 呢? 這時候真的開始懷念 t-sql 其實還是最好用的。為了讓自己日後開發時更為方便,於是花了一點時間,參考一些網路資料及 msdn 後,得到以下的測試結果:
t-sql的in:
select
productid, productname, categoryid
from
dbo.products
where
categoryid
in
(1, 2)
t-sql的not in:
select
productid, productname, categoryid
from
dbo.products
where
categoryid
not in
(1, 2)
orselect
productid, productname, categoryid
from
dbo.products
where
not
categoryid
in
(1, 2)
linq的in:
var queryresult = from p
in
db.products
where (
new int
? ).contains(p.categoryid)
select p;
linq的in解析成sql:
select
[t0].[productid], [t0].[productname], [t0].[supplierid], [t0].[categoryid], [t0].[quantityperunit], [t0].[unitprice], [t0].[unitsinstock], [t0].[unitsonorder], [t0].[reorderlevel], [t0].[discontinued]
from
[dbo].[products]
as
[t0]
where
[t0].[categoryid]
in
(@p0, @p1)
linq的not in:
var queryresult = from p
in
db.products
where ! (
new int
? ).contains(p.categoryid)
select p;
linq的not in解析成sql:
select
[t0].[productid], [t0].[productname], [t0].[supplierid], [t0].[categoryid], [t0].[quantityperunit], [t0].[unitprice], [t0].[unitsinstock], [t0].[unitsonorder], [t0].[reorderlevel], [t0].[discontinued]
from
[dbo].[products]
as
[t0]
where
not
[t0].[categoryid]
in
(@p0, @p1)
**自:
標籤: linq to sql, in, ef
如何學習LINQ?
net language integrated query linq,語言整合查詢 是微軟公司提供的一項新技術。它能夠將查詢功能直接引入到.net framework 3.5所支援的程式語言 如c visual basic等 中。查詢操作可以通過程式語言自身來傳達,而不是以字串嵌入到應用程式 中。l...
linq實現左連線
1 左連線 var leftjoin from emp in listofemployees join dept in listofdepartment on emp.deptid equals dept.id into joinedempdept from dept in joinedempdep...
linq 實現動態 orderby
class pet public int age void main new pet new pet 如果我們想根據age進行排序 很容易想到這樣來寫 var query from p in pets orderby p.age select p query.tolist foreach q con...