1

我正在使用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,
}
4

3 回答 3

5

您正在选择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;
于 2013-09-24T21:22:20.110 回答
1

你是说

选择 myCard.CardNumber;

根据你的定义

public CardNumber CardNumber { get; set; }

它返回一个 CardNumber

你期待一个 IEnumerable<Deck>而不是 IEnumerable<CardNumber>

如果您想获得卡片,则只需退回

select myCard

它应该是IEnumerable<Card>

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

于 2013-09-24T21:23:03.640 回答
0

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

于 2013-09-24T21:24:00.403 回答