LINQ查询内部连接DbContext实体到IQueryable

本文关键字:实体 IQueryable DbContext 连接 查询 内部 LINQ | 更新日期: 2023-09-27 18:12:49

我有两个表,'Events'和'Services',它们具有一对多关系(每个事件至少有一个服务)。

我正在编写一个c#控制台应用程序,它将提取事件的子集,然后提取相应的服务。

我有一个方法,提取事件到一个IQueryable<Event>对象,它的工作如预期。但是,当我将IQueryable<Event>对象连接到IQueryable<Service>(如下所示)时,我的结果对象包含不同上下文的引用,我只希望它包含IQueryable<Service>结果。

有更好的方法吗?

我的'ExtractServices'方法如下:

public IQueryable<Service> ExtractServices(IQueryable<Event> events)
{
    using (var preCertEntities = new PreCertEntities())
    {
        IQueryable<Service> services = from s in preCertEntities.Services
                                       orderby s.EventId
                                       select s;
        services = from s in services
                   join e in events on s.EventId equals e.EventId
                   select s;
        return services;
    }

LINQ查询内部连接DbContext实体到IQueryable

您不需要像这样提取子关系- EF为您做了:

public IQueryable<Service> ExtractServices(IQueryable<Event> events)
{
    return events.SelectMany(e => e.Services).OrderBy(s => s.EventId);
}