Damkulul
Damkulul

Reputation: 1476

remove elements from array until specific index

I have a string array, I need to delete all elements until a specific index or get a new array of all elements from my specific index. I'm looking for a system function without loops. my code for example:

string []myArray = {"AAA","BBB","CCC","DDD","EEE","FFF","GGG","HHH"}
int myIndex = Array.IndexOf(myArray, "DDD");

needed output :

string []myNewArray = {"EEE","FFF","GGG","HHH"}

Upvotes: 0

Views: 1940

Answers (4)

Oghli
Oghli

Reputation: 2351

there is another simple way to do that using arrayList:

you can use method arraylist.RemoveRange(start index, last index)

public static void Main()
{
  string[] array = new string[] {"AAA","BBB","CCC","DDD","EEE","FFF","GGG","HHH"};

  List<string> list = new List<string>(array);
  list.RemoveRange(0,list.IndexOf("DDD")+1);

  foreach (string str in list)
   {
    Console.WriteLine(str);
   }
}

output of program will be :

EEE
FFF
GGG
HHH

Upvotes: 0

L.B
L.B

Reputation: 116188

You can use Linq's SkipWhile

string[] myArray = { "AAA", "BBB", "CCC", "DDD", "EEE", "FFF", "GGG", "HHH" };
var myNewArray = myArray.SkipWhile(x => x != "DDD").Skip(1).ToArray();

Upvotes: 2

CDove
CDove

Reputation: 1950

Arrays are a pretty "dumb" object, as they mostly just have methods that effectively describe themselves. What you'll want to do is make it Queryable (one of its methods), then use LINQ to do it.

string[] myarray = GimmeAStringArray();
int x = desiredIndexValue;

return myarray.AsQueryable().Where(t => myarray.IndexOf(t) > x);

You might not need to AsQueryable() it to do that.

Upvotes: 0

Steve
Steve

Reputation: 216358

Just use Skip in Linq

string []myArray = {"AAA","BBB","CCC","DDD","EEE","FFF","GGG","HHH"}
int myIndex = Array.IndexOf(myArray, "DDD");
var newArray = myArray.Skip(myIndex+1);

Of course this means only that the loop is hidden from your view, but it exits nevertheless inside the Skip method. Also, the code above, will return the whole array if the search for the string is unsuccessful.

Upvotes: 3

Related Questions