我有一个包含两个(相关)表的数据库:Actions
并且Documents
正在使用 LINQ 查询它。
一个动作指向它的输入文档,一个文档指向创建它的动作,所以Action.Document
和Document.SourceAction
。
通过追溯这些关系,我们得到了交替动作和文档的处理链。
Final Document-> Last Action-> Middle Document-> First Action-> Source Document
当文档没有源操作时,它是原始源文档。
我在 LINQPad 中使用以下查询来收集此类链中的所有操作并输出它们:
var actions = new List<LINQPad.User.Action>();
var action = Actions.Where(a => a.Id == 1240).First();
while (action != null) {
actions.Add(action);
action = action.Document != null ? action.Document.SourceAction : null;
}
actions.Dump();
此查询工作正常,但它当然会为每个操作触发 SQL 查询。
有没有办法在单个 LINQ 查询中获取所有这些操作?