2015-05-26 2 views
1

У меня есть основная задача выбора будет осуществлятьсяLinq выбрать с присоединиться

var query = db.Candidate.Where(..... 

, но я хочу, где быть на другом столе под названием Tag

в SQL было бы

select * from Candidate 
join Tag on Tag.candidateId = Candidate.tagId and Tag.tagId = 7 

Таким образом, все Кандидаты с биркой 7

Im пытается сделать это напрямую с помощью Where, возможно ли это или мне нужно использовать Linq to SQL.

+0

Непосредственно его не представляется возможным. Сначала вам нужно присоединиться к таблице, а затем извлечь данные из этого сустава. –

+0

И я не могу сделать db.Candidate.Where (w => w.Tag.SOMETHING –

+0

http://stackoverflow.com/questions/9720225/how-to-perform-join-between-multiple-tables-in-linq- lambda –

ответ

1

Вы не показали отношения, но это должно быть возможно сделать что-то вроде:

var query = db.Candidate 
       .Include(c => c.Tags) 
       .Where(c => c.Tags.Any(t => t.ID == 7)) 

Просто запрос кандидатов, в которых у кандидата есть тег, у которого есть идентификатор, который вы ищете. Это будет описано более или менее как SQL, который вы показываете.

Если у вас включена ленивая загрузка, вы можете опустить Include().

2

Вы можете использовать Join в LINQ, чтобы сделать это:

var candidates = from candidate in db.Candidates 
       join on tag in db.Tags 
       where candidate.CandidateId == tag.TagId 
       select candidate 
1

Попробуйте сделать это с .join, как показано ниже: -

var query = db.Candidate.Join(db.Tags, r => r.tagId , p => p.tagId , (r,p) => new{r.Name}); 
Смежные вопросы