Lambda Expressions

Back in Chapter 17 we mentioned that lambda expressions were created for use with LINQ, to create expressions that return a method instead of a single return value. The same query we’ve been using all along could be written like this with lambda expressions:

var resultsAuthor =
    bookList.Where(bookEval => bookEval.Author == "Jesse Liberty");

As we mentioned in the previous section, the keyword var lets the compiler infer that resultsAuthor is an IEnumerable collection. You can interpret this whole statement as “fill the IEnumerable collection resultsAuthor from the collection bookList with each member such that the Author property is equal to the string ‘Jesse Liberty’.”

The variable bookEval isn’t declared anywhere; it can be any valid name. The Boolean expression on the righthand side is projected onto the variable, which is passed to the Where method to use to evaluate the collection. This method syntax takes some getting used to, and it can be easier to use LINQ’s query syntax, but you should know how to use the alternative. This example is shown in Example 21-3.

Example 21-3. The LINQ method syntax uses lambda expressions to evaluate the data retrieved from the data source

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example_21_3_ _ _ _Lambda_Expressions
{
    // simple book class public class Book { ... } class Program { static void Main(string[] args) { List<Book> bookList = new List<Book> { ... }; // find books ...

Get Learning C# 3.0 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.