"Charlie and Dinesh bring important skills to this project that enable them to show how LINQ works and the practical ways you can use it in your daily development process."
From the Foreword by Anders Hejlsberg
LINQ is one of Microsoft's most exciting, powerful new development technologies. Essential LINQ is the first LINQ book written by leading members of Microsoft's LINQ and C# teams. Writing for architects, developers, and development managers, these Microsoft insiders share their intimate understanding of LINQ, revealing new patterns and best practices for getting the most out of it.
Calvert and Kulkarni begin by clearly explaining how LINQ resolves the long-time "impedance mismatch" between object-oriented code and relational databases. Next, they show how LINQ integrates querying into C# as a "first-class citizen." Using realistic code examples, they show how LINQ provides a strongly typed, IntelliSense-aware technology for working with data from any source, including SQL databases, XML files, and generic data structures.
Calvert and Kulkarni carefully explain LINQ's transformative, composable, and declarative capabilities. By fully illuminating these three concepts, the authors allow developers to discover LINQ's full power. In addition to covering core concepts and hands-on LINQ development in C# with LINQ to Objects, LINQ to XML, LINQ to SQL, and LINQ to Entities, they also present advanced topics and new LINQ implementations developed by the LINQ community. This book
* Explains the entire lifecycle of a LINQ project: design, development, debugging, and much more
* Teaches LINQ from both a practical and theoretical perspective
* Leverages C# language features that simplify LINQ development
* Offers developers powerful LINQ query expressions to perform virtually any data-related task
* Teaches how to query SQL databases for objects and how to modify those objects
* Demonstrates effective use stored procedures and database functions with LINQ
* Shows how to add business logic that reflects the specific requirements of your organization
* Teaches developers to create, query, and transform XML data with LINQ
* Shows how to transform object, relational, and XML data between each other
* Offers best patterns and practices for writing robust, easy-to-maintain LINQ code
Charlie Calvert, Community Program Manager for the Microsoft C# team, currently focuses his technical energies on LINQ. He has periodically worked with LINQ Chief Architect Anders Hejlsberg both during the development of Delphi and during the development of LINQ. Calvert's ten technical books have sold more than 100,000 copies. They include Delphi 4 Unleashed, C++Builder 3 Unleashed, Delphi 2 Unleashed, Teach Yourself Windows 95 Programming in 21 Days, and Teach Yourself Windows Programming.
Dinesh Kulkarni is a Senior Program Manager on Microsoft's .NET Framework team. He was the Program Manager in charge of LINQ to SQL. He was deeply involved in LINQ's planning and implementation from the incubation stage and was lead author for MSDN's authoritative LINQ to SQL paper. Before joining Microsoft, he worked in diverse technical roles ranging from architecting and implementing front-end CASE tools for IBM to designing databases and middleware for a Wall Street hedge fund.
About the Authors xxix
Chapter 1 Introduction 1
Chapter 2 Getting Started 13
Chapter 3 The Essence of LINQ 39
Chapter 4 C# 3.0 Technical Overview 65
Chapter 5 Writing Query Expressions 129
Chapter 6 Query Operators 175
Chapter 7 A Quick Tour of LINQ to SQL 231
Chapter 8 Reading Objects with LINQ to SQL 247
Chapter 9 Modifying Objects with LINQ to SQL 281
Chapter 10 Using Stored Procedures and Database Functions with LINQ to SQL 319
Chapter 11 Customizing Entity Persistence and Adding Business Logic 337
Chapter 12 LINQ to Entities Overview 349
Chapter 13 LINQ to XML: Creation 369
Chapter 14 Querying and Editing XML 387
Chapter 15 XML Namespaces, Transforms, and Schema Validation 423
Chapter 16 Introduction to LINQ Patterns and Practices 465
Chapter 17 LINQ Everywhere 487
Chapter 18 Conclusion 515
Appendix A Tips for Developers 519