Filtering Operators

Filtering operations, also known as selection, restrict result sets to only elements satisfying the condition(s) specified; for example, only retrieving values within a range of 200 to 300.

Two LINQ operator methods perform filtering operations: OfType and Where.

The OfType method selects values which conform to a specified type. It utilizes the following syntax:

public static IEnumerable<TResult> OfType<TResult>(
	this IEnumerable source
)

Review an example of its use below:

System.Collections.ArrayList footieshoes =
	new System.Collections.ArrayList(4);
fruits.Add("Adidas");
fruits.Add("Nike");
fruits.Add("New Balance");
fruits.Add(5.0);
fruits.Add("Puma");
			
// Use OfType()
IEnumerable<string> query = footieshoes.OfType<string>();
Console.WriteLine("String type elements follow:");
foreach (string footieshoes in query)
{
Console.WriteLine(footieshoes);
}

It offers many practical uses such as locating form elements conforming to a specific type, e.g., all buttons or all textboxes. It also proves useful when converting collections into strongly-typed collections.

The Where method selects values which satisfy a predicate function. It utilizes the following syntax:

public static IEnumerable<TSource> Where<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, bool> predicate
)

Review an example of its use below:

List<string> snacks =
	new List<string> { "pear", "chocolate", "banana", "chips",
	"cashews", "jerky", "cookies", "raisins" };
IEnumerable<string> query = snacks.Where(snack => snack.Length < 6);
foreach (string snack in query)
{
	Console.WriteLine(snack);
}

Review another example featuring where clause use:

string[] terms = { "Javascript", "is", "not", "a", "development",
"language" };
IEnumerable<string> query = from term in terms
							where term.Length == 8
							select term;
foreach (string xyz in query)
	Console.WriteLine(xyz);