2017-01-03 3 views
0

Ich habe ein String-Array, ich muss alle Elemente bis zu einem bestimmten Index löschen oder ein neues Array aller Elemente aus meinem spezifischen Index erhalten. Ich suche nach einer Systemfunktion ohne Schleifen. mein Code zum Beispiel:Elemente aus Array entfernen, bis spezifischer Index

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

benötigt Ausgabe:

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

Antwort

3

Verwenden Sie einfach überspringen in Linq

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

Natürlich bedeutet dies nur, dass die Schleife aus Ihrer Sicht verborgen ist, aber Es geht trotzdem innerhalb der Skip-Methode. Der obige Code gibt außerdem das gesamte Array zurück, wenn die Suche nach der Zeichenfolge nicht erfolgreich ist.

+1

Es sollte 'newArray beachtet werden, 'ist kein Array, es ist ein' IEnumerable '. Dies kann akzeptabel sein (es vermeidet auch das Erstellen eines neuen Arrays). Wenn das OP ein tatsächliches Array haben möchte, kann es 'ToArray()' verwenden, um eins zu erstellen. – Kyle

+0

@Kyle guten Punkt – Steve

2

Sie können Skipwhile Linq die Verwendung

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

Arrays sind ein ziemlich „dumm“ Objekt, da sie meist nur Methoden, die sich effektiv beschreiben. Was Sie tun möchten, ist es, es abfragbar zu machen (eine seiner Methoden), dann verwenden Sie LINQ, um es zu tun.

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

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

Sie müssen nicht AsQueryable() es dazu tun.

0

es eine weitere einfache Möglichkeit, das zu tun Arraylist mit:

Sie Methode können 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); 
    } 
} 

Ausgabe des Programms:

EEE 
FFF 
GGG 
HHH 
Verwandte Themen