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

时间:2010-03-11 20:50:21

标签: c# linq

如何使用linq检索第一个不以"-"开头的元素?

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

我希望allElementsAfterVA"-s3", "va2", "va3"

4 个答案:

答案 0 :(得分:16)

要找到第一个不以“ - ”开头的所有参数,你可以这样做:

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

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

答案 1 :(得分:0)

你能说得更清楚吗? 如果我理解正确,第一个以“ - ”开头的是“-s1”,那么之后的元素将是“-s2”,“va”,“ - s3”,“va2”,“va3”而不是“-s3”,“va2”,“va3”

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

产量

-s2 -s3

这是你的意思吗?