2011-06-27 4 views
0

このSQL文とLINQの直接の変換はありますか?LINQからEF4への "Not In In"

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

2つのLINQクエリで同じことを達成できますが、1つのクエリを使用してデータベースを1回ヒットします。

答えて

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;