2010-08-04 3 views
1
  • entity1 - 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

Это на самом деле не является фактором объединения таблиц, это фактор при выборе записи, так что это действительно должно быть где положение:

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

После соединения таблиц вы должны поместить, где положение, а затем выберите идентификатор, который вам нужен. Вы получите его, выполнив метод Single против объекта IQueriable. Пример ниже:

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 } 
Смежные вопросы