在动态linq中加倍连接

时间:2012-10-23 12:59:36

标签: c# linq entity-framework

我试图加入那些表我必须使用动态linq,    如果 .Join(dbcontext.Providers)具有并返回数据,它的工作正常 当我没有关于 .Join(dbcontext.Providers)的数据时,所有 queryResolts returnig 0结果

即使其中一个连接返回0结果

,我怎样才能获取数据
var queryResolts = dbcontext.Tracks
            // Add Services
            .Join(dbcontext.Services,
                track => track.ServiceId,
                service => service.ServiceId,
                (track, service) => new { Track = track, Service = service })
            // Add ServiceInterfaces
            .Join(dbcontext.ServiceInterfaces,
                ts => ts.Track.ServiceInterfaceId,
                serviceInterface => serviceInterface.ServiceInterfaceId,
                (ts, serviceInterface) => new { Track = ts.Track, Service = ts.Service, ServiceInterfaces = serviceInterface })
            // Add Providers
            .Join(dbcontext.Providers,
                tss => tss.Track.ProviderId,
                provider => provider.ProviderId,
                (tss, provider) => new { Track = tss.Track, Service = tss.Service, ServiceInterfaces = tss.ServiceInterfaces, Providers = provider })
            .Where("ServiceInterfaces.ServiceInterfaceName == @0", "PublishPolicyInterface2")
            .Select(y => y.Track) 

            ;

感谢

三木

1 个答案:

答案 0 :(得分:1)

Join此处的作用类似于join中的SQL,如果联接的表格不包含结果,则不会返回任何值。

如果您需要left or right outer join,请使用GroupJoin()