我有一个小集合(大约 10 个项目),每个集合都有一个中等集合(从 200 到有时 500 个)链接的项目(多对一关系,如果我是正确的)。
我正在寻找一种方法来遍历这样的列表:
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
因为我需要卡片组名称和相关对象列表,但我愿意接受建议。此方法在应用程序启动时调用一次,并且必须遍历每个项目。
至于第二个列表(HashSet
),我从上周开始使用它。小研究让我相信 hashSet 是一种快速的集合类型。但我不知道它是如何工作的。
所以,问题是:为了实现我需要做的事情,使用最快的集合是什么,为什么?