C# 尝试在第一次匹配后使用linq获取所有元素

C# 尝试在第一次匹配后使用linq获取所有元素,c#,linq,C#,Linq,如何使用linq检索第一个元素之后的所有元素,而不是以“-”开头 var arr = new[] {"-s1", "-s2", "va", "-s3", "va2", "va3"}; var allElementsAfterVA = from a in arr where ???? select a; 我希望allegementsafterva为“-s3”、“va2”、“va3”要查找第一个参数后面不以“-”开头的所有参数,可以执行以下操作: var elementsAfterFirstNon

如何使用linq检索第一个元素之后的所有元素,而不是以
“-”
开头

var arr = new[] {"-s1", "-s2", "va", "-s3", "va2", "va3"};
var allElementsAfterVA = from a in arr where ???? select a;

我希望
allegementsafterva
“-s3”、“va2”、“va3”

要查找第一个参数后面不以“-”开头的所有参数,可以执行以下操作:

var elementsAfterFirstNonDash = arr.SkipWhile(i => i[0] != '-').Skip(1);

它找到“va”,然后通过Skip(1)跳过它。其余的参数将被返回。

您能说得更清楚些吗?
如果我理解正确,第一个以“-”开头的元素是“-s1”,因此后面的元素是“-s2”、“va”、“s3”、“va2”、“va3”,而不是“-s3”、“va2”、“va3”

我从你的文本中不太明白这个问题,但是看看这个例子:你看SkipWhile()了吗?似乎相关/有用

arr.Where((n, i) => i > 0 && n.StartsWith("-"))
屈服

-s2 -s3

这就是你的意思吗?

为什么要在这里使用linq?如果是一个简单的字符串数组,它不知道或不关心项目的顺序。你是说第一个不是以“-”开头的吗?@MatteS:好吧,现在你的问题更有意义了:)是的,错过了一个不是,对不起,关于它=)这似乎只是这个测试用例的解决方案。似乎您不能在任何数据集上使用它…它仍然似乎是一个测试数据特定的解决方案。也许是更普通一点的。或者,创建一个通用解决方案的问题很模糊吗?是的,这个解决方案似乎只针对这个测试用例。作为一个例子,我想得到第一个元素之后的所有元素,而不是以“-”…@MatteS开头:我只是在你的问题编辑之后重写了这个。“我相信这正是你现在想要的。”马特斯说。下一次,请更具体地说明你想要什么,因为原来的问题让它变得非常困难。回答得好@ReedSorry,我错过了一个不在那里的。。。我的意思是说“在第一个之后不要以“-”开头”。。