从数组中删除元素直到特定索引

时间:2017-01-03 16:46:50

标签: c# arrays string

我有一个字符串数组,我需要删除所有元素,直到特定索引或从我的特定索引中获取所有元素的新数组。我正在寻找一个没有循环的系统功能。 我的代码例如:

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

需要输出:

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

4 个答案:

答案 0 :(得分:3)

只需在Linq中使用Skip

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

当然这只意味着循环在视图中隐藏,但它仍然在Skip方法中退出。 此外,如果搜索字符串不成功,上面的代码将返回整个数组。

答案 1 :(得分:2)

您可以使用Linq的 SkipWhile

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

答案 2 :(得分:0)

阵列很漂亮" dumb"对象,因为他们大多只有有效描述自己的方法。你要做的是将它设为Queryable(其中一种方法),然后使用LINQ来完成它。

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

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

你可能不需要AsQueryable()来做到这一点。

答案 3 :(得分:0)

使用arrayList还有另一种简单的方法:

您可以使用方法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);
   }
}

程序的输出将是:

EEE
FFF
GGG
HHH