簡體   English   中英

LINQ查詢內連接DbContext實體到IQueryable

[英]LINQ Query to inner join DbContext Entities to IQueryable

我有兩個表,'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;
    }

你不應該像這樣提取子關系--EF會為你做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM