我必须进行一个基本的选择任务进行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吗?
我必须进行一个基本的选择任务进行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吗?
你没有表现出关系,但它必须能够做这样的事情:
var query = db.Candidate
.Include(c => c.Tags)
.Where(c => c.Tags.Any(t => t.ID == 7))
只需查询候选人的候选人有任何具有您要查找的ID的标签。这个或多或少会写成你所显示的SQL。
如果启用延迟加载,则可以省略Include()
。
您可以使用Join
在LINQ做到这一点:
var candidates = from candidate in db.Candidates
join on tag in db.Tags
where candidate.CandidateId == tag.TagId
select candidate
尝试使用。加入做如下图所示: -
var query = db.Candidate.Join(db.Tags, r => r.tagId , p => p.tagId , (r,p) => new{r.Name});
直接的不可能的。您首先需要连接表,然后从该关节获取数据。 –
而我不能做db.Candidate.Where(w => w.Tag.SOMETHING –
http://stackoverflow.com/questions/9720225/how-to-perform-join-between-multiple-tables-in-linq- lambda –