LINQ to Entities中有多对多选择

时间:2012-06-21 11:01:29

标签: c# .net entity-framework linq-to-entities many-to-many

我有两张表ServiceProvider。它们之间是一个连接表ServiceProvider,它只有两个字段 - 两个PK中的每一个都有一个字段。当添加到edmx时,连接的多对多表被抽象出来并且无法看到(正如预期的那样)。

除非我希望基于给定服务获得提供者,否则这一切都很好。从question

开始

看起来答案很简单:

var query = from p in entities.Providers
            from s in entities.Services
            where s.Id == 15
            select p;

但这将返回所有提供者。我在这里做错了什么?

4 个答案:

答案 0 :(得分:4)

var query = entities.Providers.FirstOrDefault(p => p.Id == 15).Services.ToList();

答案 1 :(得分:2)

试试这个:

var res = from s in entities.Services
          where s.Id == 15
          select s.Provider;

修改

更正并测试了对真实模型和数据的查询。它现在有效。

答案 2 :(得分:2)

这不像

那么简单
var matchingProviders = entities.Services.Single(s=>s.Id==15).Providers;

答案 3 :(得分:-1)

您可以尝试使用join,如下所示:

entity.Providers.Join(entity.Services, c => c.ID, p => p.ID,(c, p) => new { Providers= c, Services= p })