LINQ - 在Where條件式中使用in與not in

但願對你們在之後的項目中能用到,我也是在項目中碰到了這個問題;code

算算時間,接觸LINQ也有一個月的時間了,能夠算是落伍兼新生,不過最近在寫專案的時候,遇到了在LINQ的Where條件式中要如何使用in與not in呢!? 這時候真的只能坐在位子上仰天長笑,開始懷念T-SQL其實你還是最好用滴。之後,為了讓本身日後開發時更為方便,於是花了一點時間,參考一些網路資料及MSDN後,獲得如下的測試結果:
T-SQL的IN: 
Select ProductID, ProductName, CategoryID From dbo.Products  
Where not CategoryID in (1, 2)it

T-SQL的NOT IN: 
Select ProductID, ProductName, CategoryID From dbo.Products  
Where CategoryID not in (1, 2) 
or 
Select ProductID, ProductName, CategoryID From dbo.Products  
Where not CategoryID in (1, 2)select

LINQ的IN: 
var queryResult = from p in db.Products 
where (new int?[] {1,2}).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)db

LINQ的NOT IN: 
var queryResult = from p in db.Products 
where !(new int?[] { 1, 2 }).Contains(p.CategoryID) 
select p;ant

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))query

相關文章
相關標籤/搜索