我希望从列表中检索使用LINQ在C#中的唯一项目。 我有一个类甲板,与属性卡是卡的名单。此外,班卡有一个套房类型套房。我想检索卡片列表中的所有套件物品,但只能检索独特的套件。我试过的代码是:按属性使用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
我已经ommitted一些代码,但我不认为这是相关的。如果我使用全套牌(即52张牌)运行代码,我会得到4套独特套件,如预期的那样;因此我很困惑。
我已经通过扩展方法解决了这个问题,但我想知道是否有一种简单的方法可以通过LINQ来实现。
如何调用'GetSuiteByCards()'来解析'Deck.Suites'?最可能的问题是 – BrokenGlass
属性'Deck.Suites'的代码是什么? –