лямбда-выражение для Enumerable.Select - PullRequest
2 голосов
/ 17 августа 2011

Я пытаюсь понять, как начать использовать выражения linq и lambda.

Прежде всего, если кто-то может направить меня на хорошие уроки, это будет очень цениться.

Во-вторых:

Я пытаюсь выбрать все значения, которые равны определенному значению, с помощью метода Select.

Я заметил, что select можно определить с помощью

Select<TSource,TResult>(...lambda expression...)  

Теперь для этого я хочу выбрать все числа, равные 5.

int[] numbers = { 1, 2, 3, 4, 5, 5, 5, 6, 7, 8 };
IEnumerable<int> res = numbers.Select( x=>5 );    

Это не работает, я просто не понимаю, как это работает. И в какой ситуации я должен определить TSource и TResult, и что бы они были в этом случае?

Заранее спасибо!

1 Ответ

14 голосов
/ 17 августа 2011

Select() используется для проецирования каждого члена старой последовательности в новый член новой последовательности.Для фильтрации вы используете Where():

var evens = numbers.Where(x => x % 2 == 0);
var theFiveSequence = numbers.Where(x => x == 5);

Примером использования Select() может быть умножение каждого числа на два:

var doubledNumbers = numbers.Select(x => 2*x);

Вы также можете комбинировать эти методы вместе:

var doubledNumbersLessThanTen = numbers.Select(x => 2*x).Where(x < 10);

Две важные вещи, которые нужно помнить о LINQ:

  1. Элементы базовой последовательности (почти всегда) не изменены.Вы создаете новые последовательности из старых последовательностей.
  2. Запросы, которые вы пишете, лениво оцениваются.Вы не получите от них результатов, пока не будете использовать их в цикле foreach или по телефону .ToList(), .ToArray() и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...