Linq加入哪里?

时间:2010-08-04 18:14:17

标签: linq entity-framework join

  • entity1 - ID,OwnerCode
    • entity2 - OwnerCode,DepartmentCode

我也有一些DepartmentCode

现在我想得到这样的东西(sql语法):

Select e1.ID 
from entity1 e1 
join entity2 e2 on e1.OwnerCode = e2.OwnerCode and e2.DepartmentCode=7

通过Linq

我写道:

var q = from e1 in entityes1 
        join e2 in entityes2 on e1.OwnerCode equals e2.OwnerCode ... 

但是如何插入DepartmentCode = 7这里我不明白。

4 个答案:

答案 0 :(得分:7)

这并不是加入表格的一个因素,它是选择记录的一个因素,所以它应该是一个where子句:

var q = from e1 in entityes1
        join e2 in entityes2 on e1.OwnerCode equals e2.OwnerCode
        where e2.DepartmentCode == 7
        select e1.ID;

var id = q.Single(); 

答案 1 :(得分:3)

我真的不喜欢这种构造,而且可能还有另一种方法可以编写你想要的查询....但是如果你已经有了一个有效的查询并且只是试图翻译它,那么就有办法做你想要的。

var q =
  from e1 in entityes1  
  join e2 in entityes2 on
    new { OC = e1.OwnerCode, DC = 7 }
  equals
    new { OC = e2.OwnerCode, DC = e2.DepartmentCode }

答案 2 :(得分:2)

没有测试,但应该这样做:

var q = from e1 in entityes1 
        join e2 in entityes2 
           on e1.OwnerCode equals e2.OwnerCode
        where e2.DepartmentCode==7

答案 3 :(得分:1)

加入表后,必须放置where子句,然后选择所需的id。您将通过对IQueriable对象执行Single方法来获取它。示例如下:

var q = from e1 in entityes1 
        join e2 in entityes2 on e1.OwnerCode equals e2.OwnerCode
        where e2.DepartmentCode == 7
        select e1.ID;

var id = q.Single();