私は 2 つの (関連する) テーブルを持つデータベースを持っています:Actions
そしてDocuments
、LINQ を使用してクエリを実行しています。
Action はその入力 Document を指し、Document はそれを作成した Action を指し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 クエリを起動します。
これらすべてのアクションを 1 つの LINQ クエリで取得する方法はありますか?