2010-08-04 96 views
1
  • 使用实体 - ID,OwnerCode
    • ENTITY2 - OwnerCode,DepartmentCode

我也有一些DepartmentCodeLinq加入哪里?

现在我想达到这样的目的(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这里我不明白。

回答

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

加入你的表后放置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(); 
2

没有测试但应该做的:

var q = from e1 in entityes1 
     join e2 in entityes2 
      on e1.OwnerCode equals e2.OwnerCode 
     where e2.DepartmentCode==7 
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 }