MSDN приводит этот пример кода в статье об универсальном делегате Func :
Func<String, int, bool> predicate = ( str, index) => str.Length == index;
String[] words = { "orange", "apple", "Article", "elephant", "star", "and" };
IEnumerable<String> aWords = words.Where(predicate).Select(str => str);
foreach (String word in aWords)
Console.WriteLine(word);
Я понимаю, что все это делает. Что я не понимаю, так это
Select(str => str)
немного. Конечно, это не нужно? Если вы оставите это и просто наберете
IEnumerable<String> aWords = words.Where(predicate);
тогда вы по-прежнему получаете обратно IEnumerable, который содержит те же результаты, и код печатает то же самое.
Я что-то упустил или пример вводит в заблуждение?