我有一个包含两个(相关)表的数据库: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查询中获取所有这些操作?
答案 0 :(得分:2)
只有在将所有数据都存入内存时,才能在单个查询中执行此操作。否则你应该做很多查询。