我有一个字符串数组,我需要删除所有元素,直到特定索引或从我的特定索引中获取所有元素的新数组。我正在寻找一个没有循环的系统功能。 我的代码例如:
string []myArray = {"AAA","BBB","CCC","DDD","EEE","FFF","GGG","HHH"}
int myIndex = Array.IndexOf(myArray, "DDD");
需要输出:
string []myNewArray = {"EEE","FFF","GGG","HHH"}
答案 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