0
このコードはループデータをデータベースに保存しますが、データが非常に大きいために膨大な数のレコードが保存されるため、パフォーマンスに問題があります。この場合、再帰はメモリだから私はこれがn-aryツリーであることを知っている再帰の代わりの解決策が必要です。このツリー構造を再帰せずにトラバースする方法#
private void ProcessLoops(LoopContainer parent, InboundLoop parentLoop)
{
foreach (var segment in parent.Segments)
{
if (segment is Loop)
{
var segmentLoop = segment as Loop;
var inboundLoop = new InboundLoop()
{
Inbound834RegisterId = RegisterId,
InboundSTId = InboundST.InboundSTId,
LoopName = segmentLoop.Specification.Name,
LoopNumber = segmentLoop.Specification.LoopId,
Sequence = _loopSequence++
};
if (parentLoop == null)
{
inboundLoop.InboundLoopId = InboundLoopService.Instance.AddInboundLoop(inboundLoop);
}
else
{
inboundLoop.ParentLoopId = parentLoop.InboundLoopId;
inboundLoop.InboundLoopId = InboundLoopService.Instance.AddInboundLoop(inboundLoop);
}
ProcessLoops(segmentLoop, inboundLoop);
}
}
}
(それは、関連するなら)あなたはより多くのコード化された答えをしたい場合は、私に教えてください、あなたの答えの:)のためのおかげで、私はいくつかの次試してみました深い最初のアルゴリズムは、私は正しい構造を思い付くことができなかった、結果は正しくないので、よりコード化された答えは素晴らしいだろう:) – GTarek
最初の部分 - 完了。 2番目の部分 - GetByNumberを実装する必要があります。 これはもっと複雑で時間のかかるアルゴリズムですが、オブジェクトの順序を保存します。 それが必要ですか? –