に私は次の形式で木構造データを持っています:問題は、C#
H1
H1 - 1
H1 - 1 - 1
H1 - 1 - 1 - 1
H1 - 1 - 1 - 1 -1
H1 - 1 - 1 - 1 -1 - 1
H1 - 1 - 2
H1 - 1 - 3
H1 - 2
H1 - 2 - 1
H1 - 2 - 2
H2
H3
H3 - 1
H3 - 1 - 1
H3 - 1 - 1 - 1
H3 - 1 - 1 - 1 - 1
H3 - 1 - 1 - 2
H3 - 1 - 2
H3 - 1 - 3
H3 - 2
私は、アイテムが子アイテムのID
を渡すことによって、上記ツリーのどこに存在するかどうかを確認する必要があります私は上記のツリーのすべての項目をトラバースする必要があります。私はこれまでのところ、以下の再帰的な方法を書かれている:
public bool CheckIfChildItemExists(Item parentItem, long childItemId)
{
var isChildExisting = false;
foreach (Item item in parentItem.Children)
{
if (item == context.Items.Where(x => x.ItemID == childItemId && x.IsActive).FirstOrDefault() || item.Children.Contains(context.Items.Where(x => x.ItemID == childItemId && x.IsActive).FirstOrDefault()))
{
isChildExisting = true;
return isChildExisting;
}
else
{
return CheckIfChildItemExists(item, childItemId);
}
}
return isChildExisting;
}
上記の方法を使用して:
- ルート項目
H1, H2, H3
がアクセス可能です。 H1
(H1 -1
、H1 - 1 - 1
、H1 - 1 - 1 -1
など)のすべての支店にアクセスできます。H1 - 2 - 1
およびH1 - 2 - 2
はアクセス不可能で、通過していません。彼らの親アイテムH1 - 2
にはアクセスできます。H3
のすべての子はアクセスできません。
私の方法では何が間違っていますか?
Listがroot/parentではないようですが、このケースを処理する必要があります。 –
@HariPrasad私は質問に記載されている子データを持つメソッドに渡している 'parentItem'の子にアイテムが存在するかどうかをチェックする必要があります。 'H1、H2、H3'は子項目です。 – seadrag0n