我有两个表,'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;
}
答案 0 :(得分:2)
你不应该像这样提取子关系 - EF为你做:
public IQueryable<Service> ExtractServices(IQueryable<Event> events)
{
return events.SelectMany(e => e.Services).OrderBy(s => s.EventId);
}