簡體   English   中英

C#計數列表中的出現次數

[英]C# Count occurrences in list

我有一個類型為Card的類型,它的int屬性稱為Value ,其中Ace = 14,五個= 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

使用GroupBy非常簡單。

var cards = HandBuilder.GroupBy(card => card.Value)
    .OrderByDescending(group => group.Count());

要檢查一種類型,只需看第一組是否有四個項目即可。 檢查一種類型的三個,看看第一組是否有三個項目。 要檢查兩個對,只需查看前兩個組是否都有兩個項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM