获取所有Parents,但只有一个儿子和一个孙子的条件

Get all Parents, but only one son and one grandson for a condition

我有这样的结构:

Topics.SubTopics.Events
Topics.Users
Users.Topics

TopicsUsers是many-to-many关系。

我想检索 PremiereDateTimeInUtc(事件的 属性)为 equal or greater then yesterdayTopics.Users.Id == userId 的所有主题、子主题和事件。但是每个主题只应检索 1 个事件(昨天的第一个事件)。并且只有作为事件 parent 的副主题。但是即使没有子主题和事件的主题也必须全部返回。

到目前为止我试过这个:

return context.Topics
.Include(
    t => t.SubTopics.Select(
        s => s.Events
        .Any(e => e.PremiereDateTimeInUtc >= DateTime.Today.AddDays(-1))
    )
)
.Where(t => t.Users.Any(u => u.Id == userId)).ToList();

但这不起作用。我得到这个异常:“Include 路径表达式必须引用在类型上定义的导航 属性。对引用导航属性使用点路径,对集合导航属性使用 Select 运算符。 参数名称:path.

var yesterday =DateTime.Today.AddDays(-1);

var events = context.Events.Where(x=>x.PremiereDateTimeInUtc>=yesterday)
    .GroupBy(x=>x.Subtopic.TopicId, (k,g)=>new{
        TopicId=k,
        Event=g.OrderBy(e=>e.PremiereDateTimeInUtc).FirstOrDefault()
    });

var topics = context.Topics
    .Where(t=>t.Users.Any(u=>u.Id==userId))
    .GroupJoin(events, t=>t.Id, e=>e.TopicId,(t,g)=>new{
        Topic=t,
        FirstEvent=g.FirstOrDefault(),
        Subtopic=g.FirstOrDefault().Subtopic
    });