/// <summary> /// Separate <paramref name="cards"/> by card labels /// </summary> /// <param name="cards">Unsepareted cards</param> /// <returns>Separeted cards</returns> public static IEnumerable<Card> SepareteCardByLabels(IEnumerable<Card> cards) { var separeted = new List<Card>(); foreach (var card in cards) { // if more than one label, you should be separately if (card.Labels.Count > 1) { foreach (var label in card.Labels) { var newCard = new Card(); newCard.InjectFrom(card); newCard.Labels = new List<Card.Label> { label }; separeted.Add(newCard); } } else { separeted.Add(card); } } return separeted; }