2010-08-04 97 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 }