私は小さなコレクション (約 10 アイテム) を持っており、それぞれに中程度のコレクション (200 から時には 500 まで) のアイテムがリンクされています (私が正しければ、多対 1 の関係です)。
次のようにリストを反復処理する方法を探しています。
var cardSetQry = from cs in mDb.CARD_SET
select cs;
List<CARD_SET> listCardSets = cardSetQry.ToList();
Dictionary<string, List<CARD>> cardsList = new Dictionary<string, List<CARD>>();
foreach (var cardSet in listCardSets)
{
CARD_SET set = cardSet;
var cardQry = from c in mDb.CARD
where c.CARD_SET_IDE == set.CARD_SET_IDE
select c;
if (cardQry.Any())
{
HashSet<CARD> listCards = new HashSet<CARD>(cardQry.ToList());
foreach (var card in listCards)
{
card.CARD_MASTER_IDE = null;
card.CARD_CHILD_IDE = null;
mDb.SaveChanges();
}
cardsList.Add(set.CARD_SET_NAME, listCards);
}
}
dictionary
カード セット名と関連するオブジェクトのリストの両方が必要なので、を使用していますが、提案は受け付けています。このメソッドは、アプリの起動時に 1 回呼び出され、すべてのアイテムを反復処理する必要があります。
2番目のリスト(HashSet
)については、先週からこれを使い始めました。ちょっとした調査で、hashSet は高速なコレクション タイプであると確信しました。しかし、私はそれがどのように機能するのかわかりません。
では、問題は、私がしなければならないことを達成するために、どのコレクションを使用するのが最も速いか、そしてその理由は何ですか?