2013-06-27 22 views
0

我有這個SQL查詢。我可以將大部分查詢轉換爲linq,但我不明白如何在此特定查詢中實現「不在」部分。這裏是我的查詢:Sql不在Linq問題

SELECT d.processid,d.name,t.test_name 
FROM dc_tp_tprocess d 
left outer join dc_tp_tprocedured pd on pd.processid=d.processid 
left outer join dc_tp_test t on t.procedureid=pd.procedureid 
where d.active='Y' and t.testid=1 
        and d.processid not in (1,2,6,8,9,10) 
order by t.testid,d.processid 
+0

可能重複[ 「NOT IN」 子句中的LINQ到實體(http://stackoverflow.com/questions/432954/not -in-clause-in-linq-to-entities) – Heinzi

+0

我的場景是不同的,你可以在我的查詢中看到 –

+2

不幸的是,我沒有看到區別。如果你延長你的問題來解釋你嘗試過哪些方法,以及爲什麼他們不適合你的情況,這可能會有所幫助。 – Heinzi

回答

1

就像這樣的:

int[] tmp=new int[]{1,2,6,8,9,10}; 

var query=from d in dc_tp_tprocess 
      join pd in dc_tp_tprocedured on d.processid equals pd.processid into leftGroup1 
      from pd in leftGroup1.DefaultIfEmpty() 
      join t in dc_tp_test on pd.procedureid equals t.procedureid into leftGroup2 
      from t in leftGroup2.DefaultIfEmpty() 
      orderby t.testid,d.processid 
      where d.active=="Y" && t.testid==1 && !tmp.Contains(d.processid) 
      select new {d.processid,d.name,test_name=t==null?"":t.test_name};