LINQ

Data-driven applications written with Silverlight 2 make extensive use of LINQ and the .NET 3.5 language enhancements in one way or another, as many of the examples in this book will demonstrate. Because of the importance of these features, it is worth taking a look at how they work. C# 3 and Visual Basic (VB) 9 introduced several language enhancements, some of which are integral to writing queries with LINQ. Silverlight 2 applications can consume XML, JSON, objects, entities from LINQ to SQL, and entities from the ADO.NET Entity Framework, to name a few sources.

Silverlight 2 applications often need to gather values from arrays and/or lists of custom entities (e.g., a List<T>). In these cases, LINQ to Objects comes in handy, as it allows you to query any IEnumerable list. Although you can consume and manage XML through a variety of .NET libraries, such as XmlReader, LINQ to XML provides a simpler and often more powerful way to consume XML. This makes it easy for Silverlight applications to consume XML from RSS feeds or REST services and massage the data without resorting to verbose loops. LINQ queries can also join a list of objects and XML, which is very useful when an application is pulling data from multiple sources. This book makes extensive use of LINQ to Objects and LINQ to XML in several chapters in appropriate places where Silverlight applications can take advantage of them.

LINQ to Entities is used heavily in querying the Entity Data Model that the ADO.NET Entity Framework produces. The ADO.NET Entity Framework builds an Entity Data Model that maps an object-oriented conceptual model of entities to a relational store, such as SQL Server (although the ADO.NET Entity Framework supports a provider model, so other database servers such as Oracle are also supported). Queries are written with LINQ to Entities against the conceptual model and the queries are translated through the mapping layer to SQL statements that execute against the relational store. Once the entities have been returned from the LINQ to Entities query, the entities can be serialized and passed to other application tiers. For example, a Silverlight client application could request an entity from a WCF service on a remote server that exposes entities from the Entity Data Model. The Silverlight application could then use LINQ to Objects on those entities as well.

The fourth flavor of LINQ that this book will discuss is LINQ to SQL. LINQ to SQL allows a one-to-one mapping from entities to SQL Server objects. It does not support the rich mapping schema that the ADO.NET Entity Framework supports; neither does it have a provider model, so it works only with SQL Server. For example, you can write queries with LINQ to SQL that return entities that can then be serialized and passed to a Silverlight application.

Get Data-Driven Services with Silverlight 2 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.