2012-08-02 39 views
1

我有一個SQL查詢將被轉換到LINQ轉換內部連接的SQL查詢LINQ

Select b.title 
from TableA as a 
inner join TableB as b 
on a.Email=b.Email 
where a.Title<>b.Title 

,我已經嘗試了查詢

var query =from s in TableA 
      join r in TableB 
      on r.Email equals s.Email 

但不能夠複製的地方子句可能包括許多列

我的要求是我需要比較主鍵列上的2個表,然後得到其他列值不匹配

+0

這沒有意義。你想要得到的地方是a.Email = b.Email,但條件相反。 – 2012-08-02 09:08:26

+0

我的錯誤我已更新 – praveen 2012-08-02 09:11:50

回答

4

你需要一個「選擇」在查詢結束後,你需要獲得輸入正確的順序:

var query = from s in TableA 
      join r in TableB on s.Email equals r.Email 
      where s.Title != r.Title 
      select s.Title; 

對於多列,可以使用匿名類型:

var query = from s in TableA 
      join r in TableB 
       on new { s.Email, s.Foo } equals new { r.Email, r.Foo } 
      where s.Title != r.Title 
      select s.Title; 
+0

它看起來類似於內部連接,但是where子句呢?上面的查詢將檢索所有常用值。我需要比較主鍵和其他列不匹配 – praveen 2012-08-02 09:10:08

+0

@praveen:對不起,我錯過了where子句 - 這只是一個where子句......將被編輯。 – 2012-08-02 09:14:00

+0

非常感謝你! – praveen 2012-08-02 09:20:35