我有一个小集合(约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是一个快速收集类型。但我不知道它是如何工作的。
所以,问题是:为了实现我需要做的事情,最快使用的集合是什么,为什么?
_什么是最快的藏品_几乎不是10x500的问题 –
由于集合的大小?那么它会变得有趣,然后呢? – hsim
从这个角度来看,最大的性能问题实际上是数据库调用。它看起来像遍历您调用数据库的项目以获取下一组结果。最好从数据库中检索所有卡片,然后对这些结果进行过滤。 – tlbignerd