private IEnumerable <ResultCardDeckInfo> GetCardDeckInfo(ResultCardBeforeDeckInfo card, Guid userId) { var cardsInDecksForThisUserAndThisCard = DbContext.CardsInDecks .AsNoTracking() .Include(card => card.Deck) .Where(cardInDeck => cardInDeck.Deck.Owner.Id == userId && cardInDeck.CardId == card.CardId) .ToArray(); return(cardsInDecksForThisUserAndThisCard.Select(cardInDeck => GetCardDeckInfo(cardInDeck))); }
private IEnumerable <ResultCardDeckInfo> GetCardDeckInfo(ResultCardBeforeDeckInfo card, Guid userId, Dictionary <Guid, HeapingAlgorithm> heapingAlgoCache) { var cardsInDecksForThisUserAndThisCard = dbContext.CardsInDecks .AsNoTracking() .Include(card => card.Deck) .Where(cardInDeck => cardInDeck.Deck.Owner.Id == userId && cardInDeck.CardId == card.CardId) .ToArray(); foreach (var cardInDeck in cardsInDecksForThisUserAndThisCard) { if (!heapingAlgoCache.ContainsKey(cardInDeck.DeckId)) { heapingAlgoCache.Add(cardInDeck.DeckId, HeapingAlgorithms.Instance.FromId(cardInDeck.Deck.HeapingAlgorithmId)); } } return(cardsInDecksForThisUserAndThisCard.Select(cardInDeck => GetCardDeckInfo(cardInDeck, heapingAlgoCache))); }