[英]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.