我有一张具有下列属性的类卡
public int value { get; private set; }
public string suit { get; private set; }一旦我有了一位有手的球员
List<Card> hand我怎么把那只手分类,这样才能
( 1)主要分为套装组,最大(多数牌)组第一,最小(最少牌组)排在最后,和
2)对这些群体进行分类,从高到低
此外,这是为鲁克-几乎相同的扑克牌。数值范围从1-14,与四套西装-红色,绿色,黄色和黑色。此外,还有一张“鲁克”牌。提醒一下以防这件事有任何改变。
发布于 2015-07-29 20:09:21
var sorted = hand
.GroupBy(l => l.Suit)
.OrderByDescending(g => g.Count())
.SelectMany(g => g.OrderByDescending(c => c.Value));发布于 2015-07-29 20:04:07
Linq对于排序非常有用:
var sorted = hand
.GroupBy(x => x.suit)
.Select(x => new
{
Cards = x.OrderByDescending(c => c.value),
Count = x.Count(),
})
.OrderByDescending(x => x.Count)
.SelectMany(x => x.Cards);如果你想变得更时尚,你可以用一个suit把SortOrder变成它自己的类型。这将使您完全控制的事情,如扑克牌与特殊西装。
class Suit
{
public string Name { get; set; }
public int SortOrder { get; set; }
}或者,作为一个枚举:
enum Suit
{
Hearts = 1, //1 = sort order
Clubs = 2,
//...
Rook = 5,
}发布于 2015-07-29 20:09:15
创建4个链接列表(每套一张),并将每张卡插入链接列表中的相关位置(最高到最低),并为每个列表保留一个计数器。根据柜台,你会知道每套衣服有多少张牌,并且会被分类。只需将它们复制到已完成的数组即可。
https://stackoverflow.com/questions/31710004
复制相似问题