Linq 如何有效地创建父子对?

Linq 如何有效地创建父子对?,linq,entity-framework-6,Linq,Entity Framework 6,给定这样的表结构,其中TOP、MID和BOT暴露在DbContext中: Top { long TopId; IList<Mid> Mids; ... } Mid { long MidId; long TopId; IList<Bot> Bots; ...} Bot { long BotId, long MidId; DataTime Timestamp; string Data; ...} 简单地写下: var results = _db.Mids.Select(m

给定这样的表结构,其中TOP、MID和BOT暴露在DbContext中:

Top { long TopId; IList<Mid> Mids; ... }
Mid { long MidId; long TopId; IList<Bot> Bots; ...}
Bot { long BotId, long MidId; DataTime Timestamp; string Data; ...}
简单地写下:

var results = _db.Mids.Select(m => new
{
    Mid = m,
    Bot = m.Bots.OrderBy(b => b.Timestamp).FirstOrDefault()
});

您可以看到使用
results.ToString()生成的SQL查询。

您的代码看起来是正确的。你说更好是什么意思?嗯,我有数百种中级商品。我不想运行数百个查询。我只想问一个问题。我的印象是,每次引用
\u db
时,我都会得到一个新的查询。您的代码只提供一个SQL查询。
var results = _db.Mids.Select(m => new
{
    Mid = m,
    Bot = m.Bots.OrderBy(b => b.Timestamp).FirstOrDefault()
});