2016-06-24 15 views

Antwort

2

Versuchen Sie, diese

foreach (string w in words.Skip(1).Take(words.length-2)) 
{ 
    ... 
} 

Wahrscheinlich am besten, einige Tests vorher zu stellen, um sicherzustellen, dass es genug Wörter gibt!

6

verwenden

words.Skip(1).Take(words.Length-2) 

Es ist -2, so dass Sie zählen nicht die, die Sie übersprungen haben, und die, die Sie vom Ende überspringen wollen

1
int count = 0; 
string[] words = { }; 

foreach (string w in words) 
{ 
     if(count == 0 || count == (words.Length - 1)){ 
     continue; 
     } 
     //Your code goes here 
     count++; 
} 

Dies sollte für Sie funktionieren, wenn Sie eine foreach-Schleife verwenden müssen.

+1

Sie sollten' words.Length überprüfen - 1' – dotctor

11

Dies ist ein Array direkt ...

for (int i = 1; i < words.Length - 1; i++) 
{ 
    string W = words[i]; 
    //... 
} 
+2

LOL, endlich eine normale Antwort +1 –

+0

Während ich zustimme, sollte dies die beste Antwort sein, ich denke, er fragte, wie man das auf linq macht. Wie auch immer, hier ist mein Upvote –

+0

'foreach' wurde im Fragetitel erwähnt, aber da wir nicht" jedes "durchgehen, dachte ich, ich würde das einfach ignorieren, jetzt nennst du es, ich sehe das linq-Tag. –

1

Sie ArraySegment

var clipped = new ArraySegment<String>(words, 1, words.Length-2); 

foreach (String W in clipped) 
{ 
     ... 
}