Linq选择加入

时间:2015-05-26 11:02:12

标签: c# linq

我有一个基本的选择任务

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

但我希望在另一个名为Tag

的表上的位置

在sql中它将是

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

因此让所有候选人获得标签7

我试图直接用Where执行此操作,这是可能的还是我需要使用Linq to SQL。

3 个答案:

答案 0 :(得分:2)

您可以在LINQ中使用Join来执行此操作:

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

答案 1 :(得分:2)

尝试使用.Join执行此操作,如下所示: -

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

答案 2 :(得分:1)

你没有表现出这种关系,但必须能够做到这样的事情:

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

只需查询候选人的任何标签,其中包含您正在寻找的ID。这将与您显示的SQL一样或多或少地写出来。

如果启用了延迟加载,则可以省略Include()