using System.Collections.Generic;
public static void Main()
var deck = Deck.RandomDeck();
List<string> cardColors = new List<string>();
foreach (var card in deck) {
foreach(var color in cardColors) {
Console.WriteLine(color);
public Card(int value, string suit)
if (!Suits.Contains(suit)) throw new ArgumentException("Suit name not recognized", nameof(suit));
this.Name = value.ToString();
case 1: this.Name = "Ace"; break;
case 11: this.Name = "Jack"; break;
case 12: this.Name = "Queen";break;
case 13: this.Name = "King"; break;
this.Color = suit == "Clubs" || suit == "Spades" ? "Black" : "Red";
public int Value { get; set; }
public string Name { get; set; }
public string Suit { get; set; }
public string Color { get; set; }
public string Display => Name + " of " + Suit;
public static string[] Suits => new string[] { "Clubs", "Spades", "Hearts", "Diamonds" };
public static IEnumerable<Card> OrderedDeck()
foreach (var suit in Card.Suits)
for (int i = 1; i <= 13; i++)
yield return new Card(i, suit);
public static IEnumerable<Card> RandomDeck()
Random rnd = new Random();
return OrderedDeck().OrderBy(x => rnd.Next());