次の状況で使用する適切なコレクションを探しています。
各キャンプはユニークです各子供はユニークですが、キャンプにいる必要はありません。コードでは、これを次のようにビルドします。
Dictionary<Camping, List<Child>> list = new Dictionary<Camping, List<Child>>()
その後、キャンプにいるすべての子供のために
private void AddChildToCamping(Camping camping, Child child)
{
if (!list .ContainsKey(camping))
{
list .Add(camping, new List<string>());
}
list[camping].Add(child);
}
しかし、後で、子供がキャンプに参加しているかどうか、もしそうなら、子供がどのキャンプに参加しているかをすばやく確認する必要があります。上記のコードでは、キャンプの完全なリストと子供のリストをループすることを意味します。
bool foundInCamping = false;
foreach (Camping key in list.Keys)
{
List<Child> children;
bool ok = list.TryGetValue(key, out children);
if (ok)
{
if (children.Contains(targetChild))
{
foundInCamping = true;
break;
}
}
}
これを達成するためのより良い方法はありますか?