C#でLINQを使用してリストから一意のアイテムを取得したいとします。 私はクラスのデッキを持っていて、カードのリストであるプロパティのカードを持っています。さらに、クラスのカードはSuite Suiteのスイートスイートを所有しています。私は、カードのリストにあるすべてのスイートアイテムを検索したいが、ユニークなスイートのみを検索したい。私が試したコードは次のとおりです:LINQを使用するプロパティによる一意のオブジェクトC#
List<Suite> GetSuiteByCards(List<Card> cards)
{
List<Suite> list = cards.Select(c => c.Suite).Distinct().ToList();
return list;
}
私が間違っていない場合、これはカードのリストからすべてのユニークなスイートを取得する必要があります。ただし、次のテストは失敗します。
// Creating test cards
Card a = new Card(suite="spade", value="ace");
Card b = new Card(suite="spade", value="king");
List<Card> cards = new List<Card>(2) {a, b};
// Creating deck of cards
Deck d = new Deck(cards);
上記のコードでは、同じスイートを使用して小さなデッキのカード(2枚のカード)を作成しています。私は取得していますことを除いて
d.Suites.Count == 1
を::だから、次のコードは、真の評価すべき
d.Suites.Count == 2
私はいくつかのコードを省略されているが、私はそれが関連しているとは思いません。フルデッキ(コード52枚)のコードを実行すると、予想どおり4つのユニークなスイートが得られます。だから私は非常に困惑しています。
私は拡張方法でこの問題を解決しましたが、LINQ経由で簡単な方法があるかどうかは疑問でした。
どのように 'Deck.Suites'を解決するために' GetSuiteByCards() 'を呼びますか?おそらく問題がある可能性があります – BrokenGlass
プロパティ 'Deck.Suites'のコードは何ですか? –