0

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

我正在编写一个 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;
    }
4

1 回答 1

2

您不需要像这样提取子关系 - EF 会为您完成:

public IQueryable<Service> ExtractServices(IQueryable<Event> events)
{
    return events.SelectMany(e => e.Services).OrderBy(s => s.EventId);
}
于 2013-05-09T18:38:57.063 回答