3

我有一个包含两个(相关)表的数据库:Actions并且Documents正在使用 LINQ 查询它。

一个动作指向它的输入文档,一个文档指向创建它的动作,所以Action.DocumentDocument.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 查询中获取所有这些操作?

4

1 回答 1

2

仅当您将所有数据拉入内存时,您才能在单个查询中执行此操作。否则你应该做很多查询。

于 2013-01-11T22:14:18.160 回答