C# (.NET XNA) Hitta objekt av en klass i en lista

Permalänk
Inaktiv

C# (.NET XNA) Hitta objekt av en klass i en lista

Hejsan, har en lista av AbstractCard objekt. AbstractCard är en abstract klass och alla objekt har så ledes en annan klass också; CreatureCard, SpellCard eller LandCard.

Vad jag nu vill göra är att hitta alla objekt i listan som är av klassen LandCard. Hur ska jag gå till väga?
Har testat följande kod men den klagar på att jag måste använda AbstractCard istället för LandCard.

List<AbstractCard> listoflandcards = cards.FindAll(delegate(LandCard landcard) { return landcard.Type == 2; });

Hur ska jag göra för att få en lista av LandCards som finns i listan?

Tack i förhand, hoppas det går att förstå
Havsmonstret

Permalänk
Inaktiv

Löste det direkt efter, vad dum man känner sig nu.

List<AbstractCard> listoflandcards = cards.FindAll(delegate(AbstractCard landcard) { return landcard.GetType() == typeof(LandCard); });

Permalänk
Medlem
Skrivet av anon150287:

Löste det direkt efter, vad dum man känner sig nu.

List<AbstractCard> listoflandcards = cards.FindAll(delegate(AbstractCard landcard) { return landcard.GetType() == typeof(LandCard); });

Blir ännu snyggare med lambda:
var landCards = cards.FindAll(card => card.GetType() == typeof(LandCard));

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Eller om man använder LINQ kan man skriva:

var landCards = cards.OfType<LandCard>();

Permalänk
Skrivet av Teknocide:

Blir ännu snyggare med lambda:
var landCards = cards.FindAll(card => card.GetType() == typeof(LandCard));

Detta borde funka också tror jag:

var landCards = cards.Where(card => card is LandCard);

Permalänk
Medlem

OfType är klart snyggast!
Började med C#/.NET för två veckor sen så har inte så jättebra koll än.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Inaktiv

Ja det gick ju att korta ner ordentligt Kör på VirtualIntents kod.
Man har mycket kvar att lära.

Permalänk

OfType är helt klart bäst. Har för mig att GetType är rätt slö också

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase