25.12.2015 Views

Professional

1l6xhbR

1l6xhbR

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .436<br />

Quick reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .437<br />

Chapter 20 Decoupling application logic and handling events 439<br />

Understanding delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .440<br />

Examples of delegates in the .NET Framework class library . . . . . .441<br />

The automated factory scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443<br />

Implementing the factory control system without using<br />

delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443<br />

Implementing the factory by using a delegate . . . . . . . . . . . . . . . 444<br />

Declaring and using delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447<br />

Lambda expressions and delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .455<br />

Creating a method adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .455<br />

Enabling notifications by using events . . . . . . . . . . . . . . . . . . . . . . . . . . . . .456<br />

Declaring an event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .456<br />

Subscribing to an event. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457<br />

Unsubscribing from an event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457<br />

Raising an event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458<br />

Understanding user interface events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458<br />

Using events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460<br />

Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466<br />

Quick reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466<br />

Chapter 21 Querying in-memory data by using<br />

query expressions 469<br />

What is LINQ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .469<br />

Using LINQ in a C# application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470<br />

Selecting data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .472<br />

Filtering data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474<br />

Ordering, grouping, and aggregating data . . . . . . . . . . . . . . . . . . .475<br />

Joining data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .477<br />

Using query operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479<br />

Querying data in Tree objects . . . . . . . . . . . . . . . . . . . . . . . .481<br />

LINQ and deferred evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487<br />

xiv<br />

Contents

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!