Deleting Last Item from Array of String

JayGatsby picture JayGatsby · Nov 15, 2014 · Viewed 77k times · Source

I'm working on a simple blackjack game project. Firstly I create the array of cards:

string[] deck = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", };

than I multiply it 4 and given deckNumber:

newDeck = Enumerable.Repeat(deck, deckNumber*4).SelectMany(x => x).ToArray();

when I want to delete last card from array I apply this:

newDeck = newDeck.Where(w => w != newDeck.Last()).ToArray();

so the problem is that code doesn't removes last item from array, acts like there are multiple arrays and removes all last elements from them. For example with one deck:

cards: 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 

when I apply my remove command it become:

cards: 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K 

it removes all the A's from array. But I want to remove only the last item from whole array. Whats the problem how can I solve this?

Answer

Flat Eric picture Flat Eric · Nov 15, 2014

To remove just the last element use this:

newDeck = newDeck.Take(newDeck.Count() - 1).ToArray();

Your solution removes all Elements that are equal to the last element. For a string, this means, it removes all elements equal to A