2009-11-25 3 views
0

Je ne fais que mouiller mes pieds avec Linq et IEnumerable, et j'ai besoin d'aide pour essayer de déterminer si mes objets contiennent des correspondances pour un jeu de cartes. Je pense que si j'arrive à comprendre le premier, l'autre vérification de correspondance que je dois faire se mettra en place.System.Linq et IEnumerable Group Help

public class Card 
{ 
    pubic int Value { get; set; } 
    public Card(int value) 
    { 
     this.Value = value; 
    } 
} 

public bool IsCompletedSet(List<Card> cards) 
{ 
    var cardValueGroups = cards.GroupBy(card => card.Value); 
    //How do I determine that there are now exactly two groups of cards 
    //and that each group contains exactly 3 cards each? 
} 

Répondre

1

Pour obtenir le nombre de groupes:

cardValueGroups.Count() 

Pour vous assurer qu'ils ont tous exactement trois cartes:

cardValueGroups.All(g => g.Count() == 3) 
+0

Excellent, merci pour la réponse rapide. Je vais étudier cela pour comprendre ce qu'il fait et ensuite voir à l'appliquer à mes autres tests de match. Gloire! – WesleyJohnson

+0

Pour être clair, vous devriez faire ces appels sur cardValueGroups, car ceux-ci sont destinés à être utilisés après l'exécution de GroupBy (vous avez donc une énumération d'énumérations). –

+0

Merci pour les informations supplémentaires Chris, je l'ai compris il y a quelques instants quand j'essayais d'imiter cela sur une seule "carte" et que ça ne marcherait pas. Maintenant je sais pourquoi! :) – WesleyJohnson