LINQ Pocket Reference: Learn and Implement LINQ for .NET Applications (Pocket Reference (O'Reilly)) by Joseph Albahari & Ben Albahari

LINQ Pocket Reference: Learn and Implement LINQ for .NET Applications (Pocket Reference (O'Reilly)) by Joseph Albahari & Ben Albahari

Author:Joseph Albahari & Ben Albahari [Albahari, Joseph]
Language: eng
Format: epub
Tags: COMPUTERS / Programming Languages / Visual BASIC
ISBN: 9780596558390
Publisher: O'Reilly Media
Published: 2008-02-25T18:30:00+00:00


Joining in lambda syntax

The following comprehension syntax join:

from c in customers join p in purchases on c.ID equals p.CustomerID select new { c.Name, p.Description, p.Price };

in lambda syntax is as follows:

customers.Join ( // outer collection purchases, // inner collection c => c.ID, // outer key selector p => p.CustomerID, // inner key selector (c, p) => new // result selector { c.Name, p.Description, p.Price } );

The result selector expression at the end creates each element in the output sequence. If you have additional clauses prior to projecting, such as orderby in this example:

from c in customers join p in purchases on c.ID equals p.CustomerID orderby p.Price select c.Name + " bought a " + p.Description;

you must manufacture a temporary anonymous type in the result selector in lambda syntax. This keeps both c and p in scope following the join:

customers.Join ( // outer collection purchases, // inner collection c => c.ID, // outer key selector p => p.CustomerID, // inner key selector (c, p) => new { c, p } ) // result selector .OrderBy (x => x.p.Price) .Select (x => x.c.Name + " bought a " + x.p.Description);

Comprehension syntax is usually preferable when joining; it’s less fiddly.



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.