2012-02-20 2 views
-3
 string[] words = { "apple", "banana", "mango", "or", "pas", "grae" }; 

     var result1 = words.TakeWhile((word, index) => index > word.Length).ToList(); 

Я изучаю Linq, и я пытаюсь получить все слова, где индекс больше, чем длина слова.Linq Запрос не работает как ожидалось

По какой-то причине я получаю пустой список. index of or, pas, grae больше, чем длина. Но я не получаю результатов. Что мне не хватает?

ответ

3

Вы ищете Where() - TakeWhile() остановит итерацию при первом исчислении предиката в значение false (как следует из названия), что имеет место для первого слова для вас, поэтому у вас есть пустой список.

var result1 = words.Where((word, index) => index > word.Length) 
        .ToList(); 
2

Попробуйте использовать

var result1 = words.Where((word, index) => index > word.Length).ToList(); 

вместо этого.

TakeWhile будет выбирать элементы из списка, пока условие истинно.

Смежные вопросы