C#/LINQ Querying a class

本文关键字:class Querying LINQ | 更新日期: 2023-09-27 18:32:44

我正在使用Sam Jenkin的Deck of Cards类。我正在尝试查询花色中的某些牌。我收到错误:

无法将类型"System.Collections.Generic.IEnumerable"隐式转换为"System.Collections.Generic.IEnumerable"。存在显式转换(您是否缺少强制转换?

我尝试过移动东西,但我不明白这个错误。有人可以帮忙吗?我的代码是:

var deck = new Deck();
IEnumerable<Deck> deckQuery =
            from myCard in deck.Cards
            where myCard.Suit == Suit.Club
            select myCard.CardNumber;

Card课是:

public class Card : ICard
{
    public Suit Suit { get; set; }
    public CardNumber CardNumber { get; set; }
}

我的枚举器是:

public enum Suit
{
    Club = 1,
    Diamond = 2,
    Heart = 3,
    Spades = 4,
}
public enum CardNumber
{
    Ace = 1,
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5,
    Six = 6,
    Seven = 7,
    Eight = 8,
    Nine = 9,
    Ten = 10,
    Jack = 11,
    Queen = 12,
    King = 13,
}

C#/LINQ Querying a class

您正在选择一个CardNumber,但试图将其放入甲板中:

// This won't work:
// IEnumerable<Deck> deckQuery =
IEnumerable<CardNumber> deckQuery = 
        from myCard in deck.Cards
        where myCard.Suit == Suit.Club
        select myCard.CardNumber;

另一种选择是选择卡本身:

IEnumerable<Card> deckQuery = 
        from myCard in deck.Cards
        where myCard.Suit == Suit.Club
        select myCard;

你是说

选择我的卡.卡号;

根据您的定义

public CardNumber CardNumber { get; set; }

它返回一个卡号

你期待的是IEnumerable<Deck>而不是IEnumerable<CardNumber>

如果你想得到卡,那么只需返回它

select myCard

它应该是IEnumerable<Card>

Deck 类是帮助您使用卡片进行一些操作的类。我认为您正在寻找归还卡片,您不想返回许多套牌

您的错误是"选择CardNumber并将其分配给Deck"