public bool CanDiscard(ECard card) { if (CardStolen.Find(c => c.Id == card.CardId) != null) { return(false); } List <CardLib.Model.Card> cardHand = CardHand; cardHand.Remove(CardHand.Find(c => c.Id == card.CardId)); try { PhomLib.Models.MeldsAndRemainingCards summary = PhomLib.Utility.PhomLogicCenter.caculateExistingMelds(cardHand, CardStolen); foreach (CardLib.Model.Card c in CardStolen) { if (summary == null) { return(false); } else if (summary.RemainingCards.Find(c1 => c1 != null && c1.Id == c.Id) != null) { return(false); } } return(true); } catch { return(false); } }