2015-05-26 59 views
1

我必須進行一個基本的選擇任務進行LINQ的選擇與加盟

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

,但我想在哪裏上稱爲標籤

在SQL另一個表這將是

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

因此得到所有帶標記的候選人7

我試圖直接與一個這樣做這是可能的或我需要使用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)) 

只需查詢候選人的候選人有任何具有您要查找的ID的標籤。這個或多或少會寫成你所顯示的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

嘗試使用。加入做如下圖所示: -

var query = db.Candidate.Join(db.Tags, r => r.tagId , p => p.tagId , (r,p) => new{r.Name});