我正在使用卡片类制作一个简单的套牌类,并在洗牌后尝试再次对牌组进行排序。 这是我的代码:
deck.OrderBy(a => a.Face).ThenBy(a => a.Suit); //不工作
你会如何解决这个问题?无需对代码进行重大更改。 我尝试过使用Linq OrderBy和ThenBy,但似乎没有用。
编辑:试过这个,它的工作原理是deck = deck.OrderBy(a => Enum.Parse(typeof(Suit),a.Suit))。ThenBy(a => Enum.Parse(typeof(Face), a.Face))ToArray的();因为我使用enum for Face and Suit
答案 0 :(得分:2)
OrderBy
和ThenBy
不会更改现有集合,它们只返回已排序的集合,因此您需要将这些方法的返回值分配给deck
:
deck = deck.OrderBy(a => a.Face).ThenBy(a => a.Suit).ToArray();
您还需要使用ToArray
,否则由于类型不匹配,您将无法将值分配给deck
。