2009-11-25 2 views
0

Я просто мочу ноги с Linq и IEnumerable, и мне нужна помощь в попытке определить, содержат ли мои объекты совпадения для карточной игры. Я думаю, что если я получу первый, то выясню, что другой матч, который мне нужно сделать, упадет на свои места.System.Linq и 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? 
} 

ответ

1

Чтобы получить количество групп:

cardValueGroups.Count() 

Чтобы убедиться, что все они имеют ровно три карты:

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

Отлично, спасибо за быстрый ответ. Я изучу это, чтобы понять, что он делает, а затем посмотрим, как применить его к моим другим совпадениям. Престижность! – WesleyJohnson

+0

Чтобы быть понятным, вы должны делать эти вызовы в cardValueGroups, так как они предназначены для использования после выполнения GroupBy (так что у вас есть перечисление перечислений). –

+0

Спасибо за дополнительную информацию Крис, я подумал об этом несколько мгновений назад, когда я пытался имитировать это на одной «карте», и это не сработало. Теперь я знаю, почему! :) – WesleyJohnson

 Смежные вопросы

  • Нет связанных вопросов^_^