2011-06-27 83 views
0

此SQL語句與LINQ之間有直接的翻譯嗎?LINQ to EF4中的「Where Not In」

Select ProductId 
From ProductReport 
Where ProductId NOT IN(Select ProductId From ClientProduct Where ClientId = CAST('06ae6be1-ca94-44c9-bd30-f1d4f3ac3264' AS uniqueidentifier)) 

我可以用兩個LINQ查詢來實現同樣的事情,但我寧願使用一個查詢並敲一次數據庫。

回答

2
var q = from p in ProductReport 
     where !ClientProduct.Any(c => 
      c.ClientId == new Guid("06ae6be1-ca94-44c9-bd30-f1d4f3ac3264") && 
      p.ProductId == c.ProductId) 
     select p.ProductId; 
+0

+1不錯!謝謝! –

2

假設您在您的模型中有導航 - and you should

var clientId = new Guid("06ae6be1-ca94-44c9-bd30-f1d4f3ac3264"); 
var q = from pr in Context.ProductReports 
     where !pr.Clients.Any(c => c.ClientId == clientId) 
     select pr.ProductId;