如何在第一次使用linq後不從"-"
開始檢索所有元素?嘗試使用linq在第一次匹配後獲取所有元素
var arr = new[] {"-s1", "-s2", "va", "-s3", "va2", "va3"};
var allElementsAfterVA = from a in arr where ???? select a;
我想allElementsAfterVA
是"-s3", "va2", "va3"
如何在第一次使用linq後不從"-"
開始檢索所有元素?嘗試使用linq在第一次匹配後獲取所有元素
var arr = new[] {"-s1", "-s2", "va", "-s3", "va2", "va3"};
var allElementsAfterVA = from a in arr where ???? select a;
我想allElementsAfterVA
是"-s3", "va2", "va3"
爲第一不以啓動後,發現所有的參數 「 - 」,你可以這樣做:
var elementsAfterFirstNonDash = arr.SkipWhile(i => i[0] != '-').Skip(1);
這個發現「VA 「,然後通過跳過(1)跳過它。其餘的參數將被返回。
這似乎是一個解決方案只爲這個測試案例。似乎你可以在任何數據集上使用它... – 2010-03-11 20:57:59
它似乎仍然是一個測試數據特定的解決方案。也許更通用一些。或者需要模糊地創建一個通用的解決方案? – 2010-03-11 21:00:00
是的,解決方案似乎只適用於這個測試案例。作爲一個例子,我想在第一個*之後得到所有的元素,而不是以「 - 」開始...... – MatteS 2010-03-11 21:01:05
您能否更清楚一點? 如果我理解正確,以「 - 」開頭的第一個是「-s1」,所以之後的元素將是「-s2」,「va」,「-s3」,「va2」,「va3」和不是「-s3」,「va2」,「va3」
對不起,我錯過了一個*不*那裏......我的意思是說「在第一個沒有以」 - 「開頭之後..」 – MatteS 2010-03-11 21:02:05
我不完全從你的文本中得到問題,但看着這個例子:你看過SkipWhile()嗎?似乎是相關/有用的?
arr.Where((n, i) => i > 0 && n.StartsWith("-"))
產生
-s2 -s3
這是你的意思?
你爲什麼想在這裏使用linq?如果它是一個簡單的字符串數組,它不知道或關心你的項目的順序 – 2010-03-11 20:53:22
你的意思是第一個不以「 - 」開始? – 2010-03-11 20:59:18
@MatteS:好的 - 現在你的問題更有意義:) – 2010-03-11 21:01:27