accessing code, 25
accessors, properties, 232
aggregation, 287
anonymous methods, internals, 515–516
anonymous types, 56–57, 560–562, 564–566
projecting to, 581
APIs (application programming interfaces), 27
AsParallel()
method, 582
associating data types, 57
ATL (Active Template Library), 287
automating properties, implementing, 232–234
Average()
method, 607
avoiding repeated execution, 588
backing field declarations, 232, 244
BCL (Base Class Library), 25
C++ language
implicitly typed variables, 563
multiple inheritance, 287
caches, avoiding repeated, 588
calling SelectMany()
method, 602–604
capturing
variables, 516
child collections, formatting, 600
CIL (Common Intermediate Language)
extension methods, 266
objects, initializers, 248
outer variables, implementing, 518–519
classes
constructors
common initializers, 249
defaults, 247
graphs, expression trees, 523–525
System.Linq.Enumerable,
575
clauses
FROM,
613
groupby,
625
SELECT,
613
CLI (Common Language Infrastructure), 26
closed over variables, 516
CLS (Common Language Specification), 25
Code Access Security (CAS), 25
collections
child, formatting, 600
filtering, 612
interfaces
anonymous types, 560–562
implicit local variables, 562–563, 564–566
projecting, 612
common initializers, 249
Concat()
method, 606
constructors
common initializers, 249
defaults, 247
continuation, query expressions, 627–628
Count()
method, 583–584, 607, 620
CPUs (central processing units) running LINQ queries in parallel, 582
CTS (Common Type System), 25
customizing LINQ, providers, 607
data types
associating, 57
implicitly typed local variables, 55–57
declaring backing field declarations, 232, 244
DefaultIfEmpty()
method, 601
defaults, constructors, 247
deferred execution
implementing, 621
query expressions, 617
standard query operators, 584–588
definitions, default constructors, 247
delegates
exception sequence diagrams, 543
passing, 508
System.Func/System.Action,
512–528
diagrams
exceptions, sequences, 543
Venn, join operations, 591
Directory.GetFiles()
method, 615
DirectoryInfo.GetFiles()
method, 595
enabling IntelliSense, 613
error handling, sequential notification, 542–545
exception sequences, diagrams, 543
execution
caches, avoiding repeated, 588
deferred
implementing, 621
query expressions, 617
standard query operators, 584–588
managing, 26
expressions
lambda
expression trees, 522
queries
LINQ, 611
overview of, 612–630
inheritance, 287
filtering
collections, 612
System.Linq.Enumerable.Where(),
566–567
formatting child collections, 600
FROM
clause, 613
from
clause, flattening sequences, 628–630
full outer joins, 592
garbage collection, 25
general-purpose delegates, System.Func/System.Action,
512–528
generating anonymous types, 566
GetEnumerator()
method, 575, 608
GetFirstName()
method, 232
graphs, expression trees, 523–525
GreaterThan
method, 505
groupby
clause, 625
GroupBy()
method, grouping results, 598–599
grouping
GroupJoin()
method, 611
guidelines
constructors, defaults, 248
Count()
method, 584
delegates, types, 513
extension methods, 266
lambda parameters, 507
OrderBy()
/ThenBy()
methods, 590
query expressions, 632
handling errors, sequential notification, 542–545
IEnumerable
interface, 331
IEnumerable<T>
interface, 614n1
query expressions, 614
standard query operators, 575–608
IListable
interface, 331
implementing
deferred execution, 621
one-to-many relationships, 599–602
properties, automating, 232–234
implicit local variables, 562–563, 564–566
anonymous types, 560–561
implicitly typed local variables, 55–57
inheritance
extension methods, 287
multiple, 287
initialization
anonymous types, arrays, 568–569
collection initializers, 566–569
initializers
common, 249
inner joins, 591
IntelliSense, enabling, 613
interfaces
APIs, 27
collection
anonymous types, 560–562
implicit local variables, 562–563, 564–566
IEnumerable,
331
IEnumerable<T>
query expressions, 614
standard query operators, 575–608
inheritance, multiple, 329–330
IOrderedEnumerable<T>,
590
internals
interoperability, 25
Intersect()
method, 606
invoking
delegates, exception sequence diagrams, 543
methods, query expressions, 630–632
IOrderedEnumerable<T>
interface, 590
IQueryable<T>
interface, 607–608
IsKeyword()
method, 618
items
JavaScript, implicitly typed variables, 563
Join()
method, inner joins, 595–598
joining
collections, 591
data types, 57
keywords
properties, defining, 232
expression trees, 522
languages, CLS, 25
left outer joins, 591
libraries
ATL, 287
LINQ
expression trees, 525
providers, customizing, 607
queries
expressions, 611
support, 27
listings
classes
automatically implemented properties, 233–234
calling object initializers, 248, 249
defining nested classes, 274–275
implicit local variables, 254
initialization methods, 253
collection interfaces
filtering with System.Linq.Enumerable.Where(),
566–567
implicit local variables with anonymous types, 560–561
initializing anonymous type arrays, 568–569
delegates
capturing loop variables, 519–520, 521
CIL code for outer variables, 518
CIL for lambda expressions, 515–516
declaring Func/Action,
512–513
expression trees, 523
viewing expression trees, 526–528
implicit local variables, 56–57
lambda expressions
omitting parameter types, 506
parameterless statements, 507
passing delegates, 508
single input parameters, 507
statements, 505
query expressions, 612–613, 630–631
anonymous types, 616
continuation, 628
multiple selection, 628
ordering results, 614
projection using, 615
selecting anonymous types, 626–627
sorting, 622
sorting by file size, 623
standard query operator syntax, 631
standard query operators
calling SelectMany()
method, 602–603
counting items, 583
creating child collections, 600
executing LINQ queries in parallel, 582
filtering with System.Linq.Enumerable.Where()
method, 579, 584–585
projection to anonymous types, 581
projection with System.Linq.Enumerable.Select()
method, 580
sample employee/department data, 592–594
System.Linq.Enumerable()
method calls, 604–605
strings, implicitly typed local variables, 55–56
local variables
anonymous types, 560–561
loops, capturing variables, 519–520
managing execution, 26
many-to-many relationships, 592
Max()
method, 607
metadata, 25
methods
AsParallel(),
582
Average(),
607
Concat(),
606
DefaultIfEmpty(),
601
Directory.GetFiles(),
615
DirectoryInfo.GetFiles(),
595
inheritance, 287
GetFirstName(),
232
GreaterThan,
505
GroupBy(),
grouping results, 598–599
Intersect(),
606
IsKeyword(),
618
Max(),
607
Min(),
607
NameChanging(),
276
OfType<T>(),
606
OnFirstNameChanging(),
276
OnLastNameChanging(),
276
Reverse(),
606
SelectMany(),
601, 602–604, 611
SequenceEquals(),
606
standard query operators, 575–608
Sum(),
607
System.Linq.Enumerable.Where(),
filtering with, 566–567
ToArray(),
586
ToLookup(),
586
Union(),
606
Microsoft .NET, versioning, 26–27
Min()
method, 607
mind maps, query expressions, 611
modifying collections, 575
multiple inheritance, interfaces, 329–330
multiple selection, query expressions, 629
NameChanging()
method, 276
.NET (Microsoft), versioning, 26–27
normalization, 595
notifications, sequential, 542–545
OfType<T>()
method, 606
one-to-many relationships, 592
OnFirstNameChanging()
method, 276
OnLastNameChanging()
method, 276
parameters, IListable,
331
passing delegates, 508
portability of platforms, 25
predicates, 508
query expressions, 621
Where()
method, 578
projecting
to anonymous types, 581
collections, 612
properties, automating, 232–234
providers, customizing LINQ, 607
query expressions
deferred execution, 617
IQueryable<T>
interface, 607–608
overview of, 612–630
ranges, variables, 613
relationships
many-to-many, 592
Reverse()
method, 606
right outer joins, 591
running LINQ queries in parallel, 582–583
runtime, 25
safety, types, 25
security, code access, 25
SELECT
clause, 613
Select()
method, projecting with, 580–582
selecting multiple query expressions, 629
SelectMany()
method, 601, 602–604, 611, 628
SequenceEquals()
method, 606
sequences
exceptions, diagrams, 543
notification, error handling, 542–545
SelectMany,
628
sorting
OrderBy()
method/ ThenBy()
method, 588–594
standard query operators, 575–608
Count()
method, counting items with, 583–584
GroupBy()
method, grouping results with, 598–599
GroupJoin()
method, implementing one-to-many relationships, 599–602
IQueryable<T>
interface, 607–608
Join()
method, inner joins, 595–598
LINQ queries, running in parallel, 582–583
OrderBy()
method/ ThenBy()
method, 588–594
Select()
method, projecting with, 580–582
Where()
method, filtering with, 578–589
statements, lambda expressions, 505–508
structural equality, delegates, 514–515
Sum()
method, 607
support, LINQ, 27
System.Action
delegate, 512–528
System.Linq.Enumerable
class, 575
System.Linq.Enumerable.Where()
method, filtering, 566–567
tables
aggregate functions on System.Linq.Enumerable,
607
keywords, 5
.NET versions, 27
standard query operators, 606
ToArray()
method, 586
ToLookup()
method, 586
types
CTS, 25
safety, 25
Union()
method, 606
validating constructors, 244
variables
local, implicitly typed, 55–57
ranges, 613
Venn diagrams, join operations, 591
versioning, .NET (Microsoft), 26–27
Visual Basic, implicitly typed variables, 563
WCF (Windows Communication Foundation), 27
WF (Windows Workflow), 27
WHERE
clause, 613
Where()
method, 507
WinRT (Windows Runtime), 27
WPF (Windows Presentation Foundation), 27
3.137.208.200