LINQ C# Book

The standard query operators utilize generic Func delegates.
Func matches a TSource=>bool lambda expression: one that accepts a TSource argument and returns a bool value.
Similarly, Func matches a TSource=>TResult lambda expression.
The signature of the Select query operator:

public static IEnumerable Select
(this IEnumerable source, Func selector)

Func matches a TSource=>TResult lambda expression: one that maps an input element to an output element.
TSource and TResult are different types.
The following query uses Select to transform string type elements to integer type elements:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string[] names = { "C", "Java", "C#", "Javascript" };
IEnumerable query = names.Select(n => n.Length);
foreach (int length in query)
Console.Write(length + "|");
}
}

The output:
1|4|2|10|
Here is the Where query operator method signature.

public static IEnumerable Where
(this IEnumerable source, Func predicate)