2015-05-26 61 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});