using System.Collections.Generic;
public List<Card> FullHouse(List<Card> cards)
var _3pair = GetHighestPair(cards, 3);
var _2pair = GetHighestPair(Remaining(cards, _3pair), 2);
return new List<Card>(_3pair.Concat(_2pair));
private List<Card> GetHighestPair(List<Card> cards, int size) => cards.GroupBy(c => c.Value)
.OrderByDescending(grp => grp.Key)
.FirstOrDefault(grp => grp.Count() >= size)?
private List<Card> Remaining(List<Card> toConsider, List<Card> toIgnore) => toConsider.Where(c => toIgnore.Contains(c) == false).ToList();