3

私は 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 クエリで取得する方法はありますか?

4

1 に答える 1

2

これは、すべてのデータをメモリにプルする場合にのみ、単一のクエリで実行できます。それ以外の場合は、多くのクエリを実行する必要があります。

于 2013-01-11T22:14:18.160 に答える