LINQ C# Book

Input: IEnumerable
Lambda expression: TSource => bool or (TSource,int) => bool
Query syntax: where boolExpression
Where returns the elements that satisfy the given expression.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string[] names = { "Java", "C#", "Javascript", "SQL", "Oracle", "Python", "C++", "C", "HTML", "CSS" };
IEnumerable query = names.Where(name => name.EndsWith("e"));
foreach (string s in query)
{
Console.WriteLine(s);
}
}
}

The output:
Oracle
In query syntax:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string[] names = { "Java", "C#", "Javascript", "SQL", "Oracle", "Python", "C++", "C", "HTML", "CSS" };
IEnumerable query = from n in names where n.EndsWith("e") select n;
foreach (string s in query)
{
Console.WriteLine(s);
}
}
}

The output:
Oracle
A where clause can appear more than once in a query:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string[] names = { "Java", "C#", "Javascript", "SQL", "Oracle", "Python", "C++", "C", "HTML", "CSS" };
IEnumerable query =
from n in names
where n.Length > 3
let u = n.ToUpper()
where u.EndsWith("E")
select u;
foreach (string s in query)
{
Console.WriteLine(s);
}
}
}
The output:
ORACLE
Indexed filtering where expression

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string[] names = { "Java", "C#", "Javascript", "SQL", "Oracle", "Python", "C++", "C", "HTML", "CSS" };
IEnumerable query = names.Where((n, i) => i % 2 == 0);
foreach (string s in query)
{
Console.WriteLine(s);
}
}
}

The output:
Java
Javascript
Oracle
C++
HTML