2012-08-02 48 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