C#计算列表中的出现次数

use*_*343 2 c# lambda list count

我有一个Card带有int属性的类型,Value其中Ace = 14,Five = 5等.

如果我有一张卡片列表(5),即.一只手.我想做的是计算Value等于另一张卡的数字卡,即找到4种类型,3种类型,一对,两对等等.我对C#/编程很新,但我相信这是LINQ/Lambda表达式的一个案例吗?有人可以帮我吗?

class Card : IComparable<Card>
{
    private string name;
    private int value;
    private string suit;
    public int Value 
    { 
        get
        {
            return value;
        } 
    }
    <.....> 
    //Constructor accepts string ex. "AH" and builds value 14, suit "Hearts" 
    public int CompareTo(Card that)
    {
        if (this.value > that.value) return -1;
        if (this.value == that.value) return 0;
        return 1;
    }
}
List<Card> HandBuilder = new List<Card>();
HandBuilder.Add(...); //5 Cards
HandBuilder.Count ??   //Help
Run Code Online (Sandbox Code Playgroud)

Ser*_*rvy 5

这非常简单GroupBy.

var cards = HandBuilder.GroupBy(card => card.Value)
    .OrderByDescending(group => group.Count());
Run Code Online (Sandbox Code Playgroud)

要检查四种,只需查看第一组是否有四个项目; 检查三种类型,看第一组是否有三个项目.要检查两对,只需看看前两组是否有两个项目.