=> (goes to) operator, 91
accessing
backing fields of properties, 22
SharePoint sites, 500
Add Connection dialog box, 530
Add Function Import dialog box, 363
Add New Item dialog box, 354, 503
Add statements, 382
adding
announcements to SharePoint, 501
attributes to nodes, 36
stored procedures, 363
Aggregate operator, 210, 216-219
Count, 210-212
LongCount, 210-212
Max, 210-214
Min, 210-214
Ancestors( ) method, 408-409
Annotation( ) method, 461
annotations (XML), 459-461
class example, 81
passing out of methods, 81
query example, 82
querying collections of objects, 24-25
APIs
Flickr, 495
LINQ to XML, 374
classes, 374
nodes, 374
XML attributes, creating, 377
XML declarations, creating, 378-381
XML elements, creating, 375-377
AsEnumerable operator, 224
ASP.NET data binding, orders form example, 310-316
Data Source Configuration Wizard, 312-313
filters, 313
grid view, 314
order details in web page, 311
query results, configuring, 313
results, 315
AsParallel( ) method, 489
assigning delegates, 85
Association attribute (object relationships), 257
associations
EDM, 351
relationships, 236
Athena 495 See LINQ to Flickr
Attach( ) method (multitier entities), 302-305
attaching multitier entities, 302-305
attributes
adding to nodes, 36
Association (object relationships), 257
Column, 234
InheritanceMapping, 271
Table (entity classes, creating), 233
XML, creating, 377
XML nodes, 420
xmlns, 425
automatic properties, 69-73
C# 2.0 syntax, 70
example listing, 69
OperatorId, 70-71
OperatorName, 70
private setter, 73
prop snippet, 70
querying collections of objects, 21-22
Reflector generated code, 71-72
warnings, 72
Average operator, 210, 214-215
backing fields (properties), 22
binding orders form example
ASP.NET data binding, 311-315
smart client data binding, 306-309
Build C# key bindings, 544
business logic
entities, 474-476
separation of concerns, 474-476
C#
automatic properties, 69-73
deferred execution, 111-117
delegates, 83-89
Development Center web site, 11
expression trees, 122-128
extension methods, 94-103
IEnumerable<T> interface, 103-110
initializers, 74-77
iterators blog, 110
key bindings, 539-544
keywords/contextual keywords, 537-539
lambdas, 89-94
operator overrides, 117-121
partial methods, 66-69
programs, compiling, 524-526
sample programs, 520-521
types, 77-82
version numbers, 521
XML literals, 461-463
Calvert, Charlie blog, 10
Cast operator, 224
casting XML elements, 397
categories of operators, 175-177
ChangeConflictException, 295
character data (XML), 406-407
Chen, Raymond, 110
classes
DataContext, 234-236
entity
creating, 233-234
customizing, 341-344
Enumerable, 179
Extensions, 391
GetListEnumerator, 115
Item, 213
LINQ to XML
API, 374
hierarchy, 422
Musician, 145
MyNumberServer, 169-172
MyPartialClass, 67
NorthwindDataContext, 338-340
partial, adding to entity classes, 343
persistent, 345-348
Process, 511
SpecialString, 97
tables to classes, mapping, 240-243
tables, mapping, 233-236
ValidationEventArgs, 457
XAttribute, 377
XContainer, 388-391
XML, 387-388
XmlSchemaSet, 456
XNamespace, 427
XNode, 389-391
XObject, 415
clauses
group-by
projections, 154
query expressions, 132-141
let, 141-143
order, 162
query expressions, 131-132
select
projections, 154-155
code generation web site, 536
integers, querying, 14-20
collection intializers, 16
IEnumerable<T>, 19-20
query expressions, 16-18
type inferences, 18
objects, querying, 20
anonymous types, 24-25
automatic properties, 21-22
object initializers, 22-24
properties, 259
Column attribute, 234
command-line tools
edmgen.exe, 359
programs, compiling, 527-528
SqlMetal, 243
commands 408 See methods
compiling
C# programs, 524-526
programs from command line, 527-528
queries, LINQ to SQL, 277-278
composing
Element operators, 202-203
query expressions, 136
group-by clauses at the end, 136-139
group-by clauses in the middle, 139-141
into keyword, 141
let clauses, 141-143
Concat operator, 205
concurrency, managing, 290-292, 476-477
optimistic, 292
conflict detection, 292-295
conflict resolution, 295-297
limitations, 478
refreshing entities, 297-299
set of changes, 298
units of work, 478
Configure Behavior dialog box, 332
configuring CUD operations, 332
conflicts
detection, 292-295
resolution, 295-297
connections
databases, 528-530
Object Relational Designer, 531-533
Visual Studio 2008, 528-530
managing, 302
SharePoint, 503
Contains operator, 181, 188-190
content (XML), 372
context, defining, 479-480
contextual keywords
C#, 537-539
defined, 17
var, 18
continuations (query expressions), 141
Conversion AsEnumerable, 228
Conversion operators, 176, 223
AsEnumerable, 224
Cast, 224
OfType, 224-227
ToArray, 224-226
ToList, 224-226
ToLookup, 224
core operators, 177
costs (performance), 480-481
Count operator, 210-212
CreateDatabase( ) method, 316-317
CreateDatabase sample program, 450
CreatePlanets sample program, 381
create, update, delete 330 See CUD operations
creating
database connections, 528-533
Object Relational Designer, 531-533
Visual Studio 2008, 528-530
databases with LINQ to SQL, 316-318
databases programmatically, 442-443
data schemas, viewing, 449
table declarations, 450
tables, creating, 444-447
XML data, transferring, 447-449
EDMs, 354
connections, 356
database generation, 354
expanding database objects, 356
generated model, 358
models, adding, 354
new items, adding, 354
selecting database objects, 356
entity classes, 233-234
Flickr application, 497-499
persistent classes, 345-348
XHTML, 431-437
XML
attributes, 377
declarations, 378-381
elements, 375-377
CRUD (creating, reading, updating, and deleting) operations, 240, 361-362
CUD (create, update, delete) operations, 330-332
Orders property, 237
OtherKey property, 237
relationship with Order class, 263
Customer object
LINQ to SQL Designer generated example, 55-56
query listing, 23
customers, moving orders between, 287
customizing
entity classes, 341-343
lifecycle events, 344
partial classes, adding, 343
service contract compatibility, 342
WCF DataContract attribute, 341-342
generated code, 337-338
entity classes, 341-344
NorthwindDataContext class, 338-340
data binding (LINQ to SQL), 305
Data Definition Language (DDL), 269
data shaping, 470-472
Data Source Configuration Wizard, 306
data selection, 313
launching, 312
data sources
adding new, 306
choosing, 306
Data Sources window, populating, 308
enabled by third-party LINQ providers, 44
Data Transfer Objects (DTOs), 471
Database Explorer, 437
databases
connections, 528-530
Object Relational Designer, 531-533
Visual Studio 2008, 528-530
creating with LINQ to SQL, 316-318
creating programmatically, 442-443
data schemas, viewing, 449
table declarations, 450
tables, creating, 444-447
XML data, transferring, 447-449
Northwind
DataContext class, customizing, 338-340
sample programs, 521
scalar-valued functions, adding, 328
stored procedures multiple results, 324
stored procedures single results, 322
TVFs, adding, 326
queries, 26-30
relational, 247
DataContext class
concurrency management, 478
mapping classes to tables, 234-236
performance optimization, 483
persistence-related services, 474
DDL (Data Definition Language), 269
Debugger integration with LINQ, 112
Debugging C# key bindings, 543
declarations
operators, 180
XML, 371-373
creating, 378-381
DOCTYPE, 434
declarative programming, 2, 7, 48-52, 383, 516
default namespaces (XML), 426-429
DefaultIfEmpty operator, 198, 203-204
deferred execution, 111-117
compiler code produced upon calling GetSequence( ) method, 114
foreach code execution, 113-114
iterator sequence example, 111-112
overview, 59
projections, 156-159
queries, 265
reasons for, 116
deferred loading (LINQ to SQL), 264-266
delegates, 83-86
assigning, 85
data sorting pattern, 85
generic, 86-89
MyDelegate example, 83-84
DeleteOnSubmit( ) method, 284
deleting
entities, 284-285
XML nodes, 417-418
DescendantNodes( ) method, 402-404
DescendantNodesAndSelf( ) method, 404
Descendants( ) method, 397-400
descendants (XML), 397-400
dialog boxes
Add Connection, 530
Add Function Import, 363
Configure Behavior, 332
New Project, 524
discreet computations, 60
DOCTYPE declarations, 434
documents (XML)
RSS feeds, loading, 385
dotting through relationships, 258
DTDs (Document Type Definitions), 453
DTOs (Data Transfer Objects), 471
dynamic SQL, 468-469
eager loading (LINQ to SQL), 266-268
Edit C# key bindings, 540
editing XML nodes, 418-419
EDM (Entity Data Model), 349-352
associations, 351
creating, 354
connections, 356
database generation, 354
expanding database objects, 356
generated model, 358
models, adding, 354
new items, adding, 354
selecting database objects, 356
CRUD operations, 361-362
generated code, 359-360
Generator, 359
relationships, 351
stored procedures, 362
adding, 363
mapping to methods, 363
parameters, mapping, 365
update procedure, 364
edmgen.exe command-line tool, 359
EF (Entity Framework), 349
associations, 351
CRUD operations, 361-362
EDM, 350-352
entity models, creating, 354
connections, 356
database generation, 354
expanding database objects, 356
generated model, 358
models, adding, 354
new items, adding, 354
selecting database objects, 356
generated code, 359-360
layers, 352-353
relationships, 351
stored procedures, 362
adding, 363
mapping to methods, 363
parameters, mapping, 365
update procedure, 364
composing, 202-203
ElementAtOrDefault, 198
First, 198
FirstOrDefault, 198-199
LastOrDefault, 198-200
SingleOrDefault, 198
ElementAtOrDefault operator, 198
elements (XML), 373
casting, 397
creating, 375-377
nodes, adding, 421
ElementsAfterSelf( ) method, 409
ElementsBeforeSelf( ) method, 409
enabling data sources, 44
ends (entity relationships), 351
entities 20 See also objects
business logic, 474-476
classes
creating, 233-234
customizing, 341-343
concurrent changes, 290-292
optimistic 292 See optimistic concurrency
refreshing entities, 297-299
set of changes, 298
connections, managing, 302
CUD operations, configuring, 332
data binding, 305
data shaping, 470-472
deleting, 284-285
inheritance, 269-274
class diagram, 269
class hierarchy on designer surface, 274
designers, 273
InheritanceMapping attribute, 271
inserting, 282-283
loading, 264
deferred, 264-266
eager, 266-268
modifying, 239-240
multitier, attaching, 302-305
object identity, 255-256
persistence, 473-474
refreshing, 297-299
relationships, 256-351
Association attribute, 257
collection properties, 259
dotting through, 258
joining tables, 260-262
managing, 286-288
mapping, 264
retrieving, 252-254
security, improving, 484-486
submitting changes, 288-290
transactions, 299-302
updating entities, 285-286
Entity Data Model 349 See EDM
Entity Data Model Wizard, 354
connections, 356
database generation, 354
expanding database objects, 356
generated model, 358
selecting database objects, 356
Entity Framework 349 See EF
EntityClient Data Provider layer, 352
EntityRef type (Order class), 237
Enumerable class, 179
Equality operators, 177
equijoins, 145
Except operator, 205-207
explicit conversion operators, 413
Express Tree Visualizer, 125
lambda expression, parsing, 126
LINQ to SQL code, parsing, 127
opening, 125
popup menu item example, 127
Expression property, 173
expression trees, 122-125, 128
Expression Tree Visualizer, 125-127
lambda based example, 123
parsing operations, 123-124
expressions (query)
clauses, 131-132
composing, 136-143
continuations, 141
IEnumerable<T> interface, 168
IQueryable<T> interface, 168, 172-173
joins, 143-153
MyNumberServer class, 169-172
nomenclature, 130
projections, 153
deferred execution, 156-159
new class in a select clause example, 154
overview, 154-156
SelectMany operator overloads, 164-167
SelectMany operators, 159-164
transforming objects into XML, 155
range variables, 133-135
Set operators, 208-210
extensible provider model, 43-46
data sources enabled by third-party LINQ providers, 44
LinqToTerraServer example, 45
query operators, 46-48
scoping, 98-103
static method string class example, 95-96
Extensions class, 391
FakeWeatherData program, 491-492
famous Romans code reuse example, 178
File C# key bindings, 540
files (XML)
creating, 34-36
loading, 536
parsing, 31-34
filters, choosing, 313
finding providers, 536
First operator, 198
FirstFourPlanets.xml, 392-393
names of planets code, 393
output, 394
FirstOrDefault operator, 198-199
flattening group joins, 261
Flickr, 495-499
FlickrXplorer application, 496
foreach loops
deferred execution, 113-114
operator code reuse, 178
querying collections of integers, 19
foundational qualities of LINQ, 516-517
foundations
composability, 58-59
declarative programming, 48-52
extensibility, 43-46
data sources enabled by third-party LINQ providers, 44
LinqToTerraServer example, 45
query operators, 46-48
hierarchies, 53-58
integration, 40-41
transformational powers, 60-61
unified method for querying, 42-43
from clauses (query expressions), 17, 132
from keyword (range variables), 135
fundamentals (XML), 370-371, 374
future
LINQ to Flickr, 495
API, 495
applications, creating, 497-499
download, 496
FlickrXplorer application, 496
web site, 495
LINQ to SharePoint
announcements, adding, 501
assemblies, registering, 502
connections, 503
example site, 501
LINQ to SharePoint Entity Wizard, 503
queries, 508
requirements, 500
site access, 500
site lists, choosing, 505
Solution Explorer example, 507
template, choosing, 503
web site, 499
wizard choices, reviewing, 50
PLINQ, 488-490
complexities, 494
FakeWeatherData program, 491-492
IParallelEnumerble interface, 489
LINQ query time differences, measuring, 493-494
Parallel Computing team web site, 488
ParallelQuery<int>, 489
performance improvements, 490
generated code
automatic properties, 71-72
customizing, 337-338
entity classes, 341-344
NorthwindDataContext class, 338-340
EF, 359-360
Generation operators, 177, 181
Range, 181-183
Repeat, 181-185
generic delegates, 86-89
generics
overview, 9
syntax, 10
GetChangeSet( ) method, 298
GetListEnumerator class, 115
GetProcesses( ) method, 511
GetSequence( ) method, 113
GettingStartedWithLinqToXML sample program, 382
goes to (=>) operator, 91
graphical designer for mapping 531 See Object Relational Designer
group-by clauses
projections, 154
query expressions, 132
at the end, 136-139
in the middle, 139-141
GroupByOperators sample program
group-by clauses, 139
let clause, 142
Grouping operators, 177
handling conflicts, 295-297
hierarchies, 53-58
Customer object generated by LINQ to SQL Designer example, 55-56
two object relationship, 54
LINQ to XML classes, 422
Hossain, Mehfuz, 496
identifiers (XML namespaces), 424
identity (objects), 255-256
IEnumerable<T> interface, 103-105
Element operators, composing, 202-203
enumeration, 106-108
implementing with yield return, 108
iterators, 108-110
operator support, 119
query expressions, 168
querying collections of integers, 19-20
sequences, 106
IEnumerator<T> interface, 107
IEqualityComparer interface, 188
IL (Intermediate Language), 22
immediate loading, 266-268
imperative programming, 48, 383
inferred types, 78-79
Informit web site, 11
inheritance (LINQ to SQL), 269-274
class diagram, 269
class hierarchy on designer surface, 274
designers, 273
InheritanceMapping attribute, 271
InheritanceMapping attribute, 271
initializers, 74
object, 76-77
objects, 22-24
inner joins, 143-146
inserting
entities, 282-283
XML nodes, 420-421
InsertOnSubmit( ) method, 283
installing
.NET Framework, 522
SQL Server Express, 523
Visual Studio Express, 522
IntelliSense C# key bindings, 541
interfaces
IEnumerable<T>, 103-105
Element operators, composing, 202-203
enumeration, 106-108
implementing with yield return, 108
iterators, 108-110
operator support, 119
query expressions, 168
querying collections of integers, 19-20
sequences, 106
IEnumerator<T> interface, 107
IEqualityComparer, 188
IParallelEnumerable<int>, 489
IQueryable<T>, 172-173
IXmlLineInfo, 415
Intermediate Language (IL), 22
Intersect operator, 204-207
into keyword (query expressions), 141
into operators, 150
IParallelEnumerable interface, 489
IQueryable<T> interface, 172-173
IQueryable Toolkit, 496
IsPrimaryKey property (Column attribute), 234
IsState( ) method, 96
Item class, 213
IXmlLineInfo interface, 415
joining tables, 260-262
joins, 143
equijoins, 145
inner, 143-146
left outer, 149-151
LINQ to SQL, 153
object-oriented model, 152-153
web site, 536
key bindings (C#), 539-544
keywords
C#, 537-539
contextual, 17-18
from, 135
into, 141
var, 78-79
Kulkarni, Dinesh blog, 11
=> (goes to) operator, 91
C# 2.0 anonymous methods, compared, 92
exercises, 92-94
expression trees based on lambdas example, 123
local variables, 91
methods, compared, 90
query expressions role, 118
syntax, 89
Language Integrated Query 1 See LINQ
Last operator, 198-200
LastOrDefault operator, 198-200
layers (EF), 352-353
left outer joins, 149-151
let clauses (query expressions), 141-143
lifecycle (entities), 240, 282
deleting entities, 284-285
entity class customizations, 344
inserting entities, 282-283
managing relationships, 286-288
submitting changes, 288-290
updating entities, 285-286
line numbers (XML nodes), 414-417
LINQ (Language Integrated Query), 1
building blocks, 517
foundational qualities, 516-517
overview, 3
LINQ to Entities 349 See EF
LINQ to Flickr, 495
API, 495
applications, creating, 497-499
download, 496
FlickrXplorer application, 496
web site, 495
LINQ to Objects
LINQ to SQL, compared, 8-9, 105
providers for existing technologies, 509
system processes, querying, 510-511
LINQ to Relational technology, 366
LINQ to SharePoint, 499
announcements, adding, 501
assemblies, registering, 502
connections, 503
example site, 501
LINQ to SharePoint Entity Wizard, 503
queries, 508
requirements, 500
SharePoint site access, 500
site access, 500
site lists, choosing, 505
Solution Explorer example, 507
template, choosing, 503
web site, 499
wizard choices, reviewing, 506
LINQ to SharePoint Entity Wizard
choices, reviewing, 506
connections, 503
first page, 503
site lists, choosing, 505
LINQ to SQL 290
concurrent changes, 290-292
optimistic 292 See optimistic concurrency
refreshing entities, 297-299
set of changes, 298
connections, managing, 302
CRUD, 240
data binding, 305
databases, creating, 316-318
entities
deleting, 284-285
inserting, 282-283
modifying, 239-240
submitting changes, 288-290
relationships 236 See entities, relationships
retrieving, 252-254
updating entities, 285-286
expression tree, parsing, 127
inheritance, 269-274
Join operator, 260-261
joins, 153
LINQ to Objects, compared, 8-9, 105
LinqToSqlWithoutDesigner example, 26-30
loading options, 264-268
mapping classes to tables, 233-236
mapping tools
command-line, 243
graphical designer 531 See Object Relational Designer
multitier entities, attaching, 302-305
object identity, 255-256
overview, 231-233
performance
compiled queries, 277-278
queries versus results, 275-276
relationships, 236-239
stored procedures, 319
CUD operations, 330-332
executing, 322
mapping, 320
relationships, loading, 333-334
returning entity type example, 322-323
returning multiple results, 324-326
returning rows with key values example, 322
scalar-valued functions, 328-329
TVFs, 326-328
transactions, 299-302
transformation into XML, 60
translating, 248-250
base class library methods, 250
scalar UDFs, 251
T-SQL methods, 251
LINQ to SQL Designer
Customer object example, 55-56
generated code, customizing, 337-338
entity classes, 341-344
NorthwindDataContext class, 338-340
LINQ to XML 408
Ancestors( ) method, 408-409
annotations, 459-461
character data, 406-407
databases, creating programmatically, 442-443
data schemas, viewing, 449
table declarations, 450
tables, creating, 444-447
XML data, transferring, 447-449
declarations, 434
DescendantNodes( ) method, 402-404
DescendantNodesAndSelf( ) method, 404
descendants, 397-400
ElementsBeforeSelf( )/ElementsAfterSelf( ) methods, 409
explicit conversion operators, 413
namespaces, 424-426
accidentally omitting, 436
default, 426-429
identifiers, 424
prefixes, 425
schema validation, 458-459
XHTML, creating, 435
nodes, 374
adding, 420-421
attributes, 420
deleting, 417-418
editing, 418-419
elements, 421
missing, 411-414
parent nodes, 407-409
queries, 392
composition, 400-402
FirstFourPlanets.xml, 392-394
schema validation, 451-459
text node searches, 405
transformations, 429
relational data into XML, 437-442
XHTML, creating, 431-437
XML between formats, 430-431
XML data into databases, 447-449
XML
attributes, creating, 377
declarations, creating, 378-381
documents, creating, 378, 382-383
documents, saving to disks, 383, 386
elements, creating, 375-377
literals, 461-463
XML files
creating, 34-36
parsing, 31-34
XNamespace class, 427
LinqDataSource application example
Data Source Configuration Wizard, 312-313
filters, 313
grid view, 314
query results, configuring, 313
results, 315
LINQExtender, 496
LinqToSqlWithoutDesigner example, 26-30
LinqToTerraServer provider, 45
List<T>, declaring, 104
listings
anonymous class example, 81
automatic properties
C# 2.0 syntax, 70
example, 69
Reflector generated code, 71-72
Contains operator, 188
Count operator, 211
Customer objects
generated by LINQ to SQL Designer, 55-56
query, 23
databases, creating programmatically
table declarations, 450
tables, creating, 444-445
deferred execution, iterator sequence example, 111-112
DescendantNodes( ) method, 403
DescendantNodesSelf( ) method, 404
Descendants program, 398-399
Distinct operator, 207
enumerating with IEnumerator<T> interface, 107
Except method, 208
expression trees
lambda based, 123
parsing operations, 123-124
extension methods
scoping, 99-103
static method string class example, 95-96
FirstFourPlanets.xml, 392-393
names of planets code, 393
output, 394
Flickr application, 498
generic delegates example, 88
IEnumerable<T> interface, implementing with yield return, 108
inner joins, 143-145
Intersect operator, 206
left outer joins, 149
LINQ to SQL, LinqToSqlWithoutDesigner example, 26-30
LINQ to XML
customers who live in Mexico D.F., 31
data stored in Customers.xml file, 32
Min/Max operators
highest/lowest values in a sequence, 212
Item class/GetItems( ) method, 212
min/max values for complex types with multiple fields, 213
MyDelegate example, 83-84
MyNumberServer class, 169
object-oriented join model, 152
operator overrides, Where operator, 119-120
OrderByDescending operator, 221
Ordering operators, 220
partial method example, 67-68
projections
deferred execution, 158
new class in a select clause example, 154
SelectMany operators, 159
transforming objects into XML, 155
query expressions
group-by clauses, 139
let clause, 142
querying collections of integers, 14
relational data transformation into XML, 437-439
Repeat operator, 184
system processes, querying, 510-511
ToArray operator, 226
transformations, LINQ to SQL query into XML, 60
Union operator, 205
XHTML documents
creating, 432-434
example, 435
XML
annotations, 459
character data, 406-407
declarations, creating, 378-379
documents, creating one node at a time, 382
documents, example, 370
documents, saving to disks, 383
files, creating, 34
nodes, deleting, 417
schema validation example, 455-456
single node access, 401
Load( ) method, 385
loading
entities, 264
LINQ to SQL
deferred, 264-266
eager, 266-268
relationships, 333-334
XML files, 536
local variables, 91
locating operators, 179-181
LongCount operators, 210-212
managing
concurrency, 476-478
connections, 302
entity relationships, 286-288
transactions, 299-302
many-to-many relationships, 262
mapping
classes to tables, 233-236
relationships, 264
stored procedures, 320-322
methods, 363
parameters, 365
tables to classes, 240-243
TVFs, 327
Max operators, 210-214
metadata declarations, 121
methods 408
Ancestors ( ), 408-409
Annotation( ), 461
anonymous types, passing, 81
AsParallel( ), 489
Attach( ), 302-305
CreateDatabase( ), 316-317
DeleteOnSubmit( ), 284
DescendantNodes( ), 402-404
DescendantNodesAndSelf( ), 404
Descendants( ), 397-400
ElementsAfterSelf( ), 409
ElementsBeforeSelf( ), 409
GetChangeSet( ), 298
GetProcesses( ), 511
GetSequence( ), 113
InsertOnSubmit( ), 283
IsState( ), 96
lambdas, compared, 90
LINQ to SQL translation, 250-251
Load( ), 385
MoveNext( ), 115
MyPartialMethod( ), 67
OnCreated( ), 339
OnRequiredDateChanged( ), 344
OnRequiredDateChanging( ), 344
partial, 66-69
ProcessList( ), 434
Refresh( ), 297
Resolve( ), 297
scalar UDFs, 251
ShowExcept( ), 208
ShowIntersect( ), 206
ShowRepeat( ), 184
ShowUnion( ), 205
StartsWith( ), 250
stored procedures, mapping, 363
SubmitChanges( ), 288-290
overriding, 340
performance optimization, 483
T-SQL, 251
ToString( ), 384
Validate( ), 456
ValidationEventHandler( ), 457
WriteFile( ), 68
XContainer class, 391
XElement class, 391
XNode class, 391
Microsoft
MVC download, 496
Office SharePoint Server 2007 VHD, 500
Min operator, 210-214
minimal update statements, 286
missing nodes (XML), 411-414
modifying entities, 239-240
ModifyNodes program, 417
MoveNext( ) method, 115
multitier entities, attaching, 302-305
Musician class, 145
MVC download, 496
MyDelegate example, 83-84
MyNumberServer class, 168-172
MyPartialClass class, 67
MyPartialMethod( ) method, 67
namespaces
System.Diagnostics, 510-511
System.Xml.Linq, 32
XML, 424-426
accidentally omitting, 436
default, 426-429
identifiers, 424
prefixes, 425
schema validation, 458-459
XHTML, creating, 435
Navigation C# key bindings, 541
.NET
Development web site, 535
Framework
installing, 522
version numbers, 521
web site, 536
New Project dialog box, 524
nodes (XML), 374
adding, 420-421
deleting, 417-418
editing, 418-419
elements, 421
missing, 411-414
parents, 407-409
nomenclature (query expressions), 130
Northwind database
connections
Object Relational Designer, 531-533
Visual Studio 2008, 528-530
customizing, 338-340
DataContext class, customizing, 338-340
download, 521
sample programs, 521
scalar-valued functions, adding, 328
stored procedures, 322-324
TVFs, adding, 326
object initializers, 22-24, 76-77
object-oriented join model, 152-153
Object Relational Designer 531
database connections, creating, 531-533
mapping tables to classes, 240-243
Object Services layer, 352
objects 20 See also entities
collections, querying, 20
anonymous types, 24-25
automatic properties, 21-22
object initializers, 22-24
hierarchy example, 54
identity, 255-256
lifecycle, 240
references, 255
Association attribute, 257
collection properties, 259
defining, 236-238
dotting through, 258
joining tables, 260-262
mapping, 264
querying across, 238-239
OfType operator, 224-227
OnCreated( ) method, 339
OnRequiredDateChanged( ) method, 344
OnRequiredDateChanging( ) method, 344
operations
CUD, 330-332
parsing, 123-124
OperatorId automatic property, 70-71
OperatorName automatic property, 70
operators
Count, 210-212
LongCount, 210-212
Max, 210-214
Min, 210-214
categories, 175-177
choosing, 177
Conversion, 223
Cast, 224
OfType, 224-227
ToArray, 224-226
ToList, 224-226
ToLookup, 224
core, 177
declarations, 180
composing, 202-203
ElementAtOrDefault, 198
First, 198
FirstOrDefault, 198-199
Last, 198-200
LastOrDefault, 198-200
SingleOrDefault, 198
Equality, 177
explicit conversion, 413
famous Romans code reuse example, 178
foreach loop code reuse example, 178
Range, 181-183
Repeat, 181-185
Grouping, 177
IEnumerable<T> interface support, 119
into, 150
locating, 179-181
OrderBy, 219-221
OrderByDescending, 219-222
Reverse, 219
Revise, 223
overriding, 117-121
Skip, 192-193
Take, 192-193
TakeWhile, 192-195
Projection, 177
query, 46-48
Restriction, 177
SelectMany, projections, 159-167
SequenceEqual, 190-192
Concat, 205
Except, 205-207
Intersect, 204-207
query expressions, 208-210
SequenceEqual, 205
Union, 204-206
web site, 536
Where
filtering nodes, 34
implementing, 119-120
optimistic concurrency, 292
conflict detection, 292-295
conflict resolution, 295-297
limitations, 478
optimizing performance, 482-484
Order class
EntityRef type, 237
relationship with Customer class, 263
Storage property, 237
OrderByDescending operator, 219-222
OrderBy operator, 219-221
OrderBy, 219-221
OrderByDescending, 219-222
Reverse, 219
Revise, 223
OrdersByCustomer stored procedure
loading Customer.Orders, 334
returning entity types, 322-323
orders form example, smart client data binding, 306
orders, moving between customers, 287
Orders property (Customer class), 237
OtherKey property (Customer class), 237
overriding
operators, 117-121
SubmitChanges( ) method, 340
Paldino, Nick, 81
Parallel Computing team web site, 488
Parallel LINQ 60 See PLINQ
ParallelQuery<int>, 489
parent nodes (XML), 407-409
parsing
operations, 123-124
XML files, 31-34
partial classes, adding to entity class, 343
partial methods, 66
example listing, 67-68
rules, 68-69
Partitioning operators, 176, 192-193
Skip, 192-193
Take, 192-193
TakeWhile, 192-195
passing anonymous types out of methods, 81
performance
context, defining, 479-480
costs, 480-481
improving, 490
LINQ to SQL
compiled queries, 277-278
queries versus results, 275-276
optimizing, 482-484
persistent classes, creating, 345-348
persistence
DataContext services, 474
entities, 473-474
ignorance, 347
separation of concerns, 473-474
PLINQ (Parallel LINQ), 60, 488-490
complexities, 494
FakeWeatherData program, 491-492
IParallelEnumerable, 489
LINQ query time differences, measuring, 493-494
Parallel Computing team web site, 488
ParallelQuery<int>, 489
performance improvements, 490
prefixes (XML namespaces), 425
pre-LINQ mainstream programming languages versus queries, 515-516
private setter (automatic properties), 73
Process class, 511
ProcessList( ) method, 434
Projection operators, 177
projections, 153
deferred execution, 156-159
new class in a select clause example, 154
overview, 154-156
retrieving, 252-254
SelectMany operator overloads, 164-167
SelectMany operators, 159-164
SQL, 155
transforming objects into XML, 155
prop snippet, 70
properties
automatic, 69-73
querying collections of objects, 21-22
backing fields, 22
collection, 259
Expression, 173
IsPrimaryKey (Column attribute), 234
Orders (Customer class), 237
OtherKey (Customer class), 237
Storage (Orders class), 237
providers
finding, 536
LinqToTerraServer, 45
third-party, 44
queries
collections of integers, 14-20
collections of objects, 20-25
databases, 26-30
deferred execution, 265
LINQ to XML, 392-394
LINQ to SQL, 275-278
PLINQ, 490
SharePoint, 508
system processes, 510-511
unified method, 42-43
versus pre-LINQ mainstream programming languages, 515-516
XML composition, 400-402
query expressions
beginning/ending, 16
clauses, 131-132
composing, 136-143
continuations, 141
IEnumerable<T>, 168
joins, 143-153
lambdas, 118
MyNumberServer class, 169-172
nomenclature, 130
projections, 153
deferred execution, 156-159
new class in a select clause example, 154
overview, 154-156
SelectMany operator overloads, 164-167
SelectMany operators, 159-164
transforming objects into XML, 155
querying collections of integers, 16-18
range variables, 133-135
Set operators, 208-210
translating into query methods, 118
query methods, translating from query expressions, 118
query operators, 46-48
Range operator, 181-183
range variables (query expressions), 133-135
identifiers, introducing, 133
introducing, 135
types, explicitly stating, 134
Refactor C# key bindings, 543
references (objects), 255
Reflector automatic property generated code, 71-72
Refresh( ) method, 297
refreshing entities, 297-299
relational data, transforming into XML, 437-442
relational databases, 247
relationships 236
association, 236
dotting through, 258
ends, 351
entities, 256-351
Association attribute, 257
collection properties, 259
dotting through, 258
joining tables, 260-262
managing, 286-288
mapping, 264
loading, 333-334
many-to-many, 262
objects, 236-239
unary, 351
Repeat operator, 181-185
Resolve( ) method, 297
Restriction operators, 177
retrieving entities, 252-254
Reverse operator, 219
Revise operator, 223
Root MSDN Library web site, 535
root nodes (XML), 371
RSS feeds, loading to XML documents, 385
rules, partial method example, 68-69
sample sources, 10
saving XML documents, 383, 386
scalar UDFs, LINQ to SQL translation, 251
scalar-valued functions, 328-329
schema validation (XML), 451
documents, 452-453
DTD specification, 453
namespaces, 458-459
validating example, 455-457
XSD files, 454
scoping extension methods, 98-103
security
improving, 484-486
LINQ to SQL, 278-279
select clauses
projections, 154-155
SelectMany operators, 159-167
self-referencing relationships, 351
separation of concerns
business logic, 474-476
persistence, 473-474
SequenceEqual operator, 190-192, 205
Server Explorer, 437
Concat, 205
Except, 205-207
Intersect, 204-207
query expressions, 208-210
SequenceEqual, 205
Union, 204-206
SharePoint 499 See LINQ to SharePoint
ShowExcept( ) method, 208
ShowIntersect( ) method, 206
ShowRepeat( ) method, 184
ShowUnion( ) method, 205
SimpleJoin program
group joins, 147
inner joins, 143-145
left outer joins, 149
simultaneous changes (entities), 290-292
optimistic, 292
conflict detection, 292-295
conflict resolution, 295-297
limitations, 478
refreshing entities, 297-299
set of changes, 298
single node access listing, 401
Single operator, 198-201
SingleOrDefault operator, 198
Skip operator, 192-193
SkipWhile operator, 192, 196-197
smart client data binding, orders form example, 306-310
binding object, choosing, 306
data source type, choosing, 306
Data Sources window, populating, 308
master-details form design view, 309
new data source, adding, 306
order form design view, 308
Smet, Bart De, 499
snippets, 70
Solution Explorer (SharePoint example), 507
source code web site, 519
SpecialString class, 97
SQL 290 See also LINQ to SQL
dynamic, 468-469
joins, 153
projections, 155-156
security, improving, 484-486
Server Express, installing, 523
SqlMetal, 243
StartsWith( ) method, 250
Storage property (Order class), 237
stored procedures, 319
CUD operations, 330-332
configuring on entities, 332
override methods, 330
update mapped to a method example, 331
EF, 362
adding, 363
mapping to methods, 363
parameters, mapping, 365
update procedure, 364
executing, 322
mapping, 320
relationships, loading, 333-334
returning
entity type example, 322-323
multiple results, 324-326
rows with key values example, 322
scalar-valued functions, 328-329
TVFs, 326-328
SubmitChanges( ) method, 288-290
overriding, 340
performance optimization, 483
system processes, querying, 510-511
System.Data.Linq web site, 536
System.Diagnostics namespace, 510-511
System.Linq web site, 536
System.Xml.Linq namespace, 32
System.Xml.Linq web site, 536
T-SQL methods, 251
Table attribute (entity classes, creating), 233
tables
classes to tables, mapping, 233
DataContext class, 234-236
entity classes, creating, 233-234
Object Relational Designer, 240-243
SqlMetal, 243
databases
creating, 444-447
declarations, 450
joining, 260-262
table-valued functions (TVFs), 326-328
Take operator, 192-193
TakeWhile operator, 192-195
TerraServer web site, 45
text node searches (XML), 405
third-party LINQ providers, 44
ToArray operator, 224-226
ToDictionary operator, 224, 227-228
ToList operator, 224-226
ToLookup operator, 224
ToString( ) method, 384
transactions, managing, 299-302
transformations, 60-61
LINQ to SQL query into XML, 60
select clause projections, 155
XML, 429
relational data into XML, 437-442
XHTML, creating, 431-437
XML between formats, 430-431
XML data into databases, 447-449
translating LINQ to SQL, 248-250
base class library methods, 250
scalar UDFs, 251
T-SQL methods, 251
troubleshooting resources, 10
TVFs (table-valued functions), 326-328
types
anonymous, 24-25
C# 3.0, 77-82
EntityRef, 237
IEnumerable<T>, 19-20
inferences, querying collections of integers, 18
range variables, 134
XElement, 33
UDFs (user-defined functions), 251
unary relationships, 351
unified method for querying, 42-43
Union operator, 204-206
units of work
concurrency management, 478
performance optimization, 483-484
Update Wizard (EF designer), 363
updating entities, 285-286
using directives, 376
Validate( ) method, 456
ValidationEventArgs class, 457
ValidationEventHandler( ) method, 457
var contextual keyword, 18
var keyword (type inferences), 78-79
variables
local, 91
range, 133-135
Visual Basic, XML literals, 461-463
Visual Studio, database connections, creating, 528-530
Visual Studio Express, 522
WCF (Windows Communication Foundation), 341
WCF DataContract attribute (entity class customizations), 341-342
web sites
C#
Development Center, 11
iterators blog, 110
sample programs, 521
Calvert, Charlie blog, 10
code generation, 536
database connection blog, 528
EDM Generator, 359
Flickr, 495
download, 496
FlickrXplorer application, 496
Informit, 11
joins, 536
Kulkarni, Dinesh, 11
LINQExtender, 496
LINQ IQueryable Toolkit, 496
Microsoft Office SharePoint Server 2007 VHD, 500
MVC download, 496
.NET
Development, 535
Northwind database, 521
operators, 536
Parallel Computing team, 488
PLINQ complexities, 494
providers, finding, 536
references, 535
Root MSDN Library, 535
SharePoint, 499
source code, 519
SQL Server Express, 523
System.Data.Linq, 536
System.Linq, 536
System.Xml.Linq, 536
TerraServer, 45
Visual Studio Express, 522
where clauses (query expressions), 17, 132
Where operator
filtering nodes, 34
implementing, 119-120
Windows C# key bindings, 542
Windows Communication Foundation (WCF), 341
wizards
Data Source Configuration, 306, 312-313
Entity Data Model, 354-358
LINQ to SharePoint Entity, 503-506
Update (EF designer), 363
WriteFile( ) method, 68
XAttribute class, 377
XContainer class, 388-391
methods, 391
XDocument class, compared, 390
XHTML, creating, 431-437
XML 408 See also LINQ to XML
Ancestors( ) method, 408-409
annotations, 459-461
attributes, creating, 377
character data, 406-407
content, 372
databases, creating programmatically, 442-443
data schemas, viewing, 449
table declarations, 450
tables, creating, 444-447
XML data, transferring, 447-449
declarations, 371-373
creating, 378-381
DOCTYPE, 434
DescendantNodes( ) method, 402-404
DescendantNodesAndSelf( ) method, 404
descendants, 397-400
documents
example, 370
RSS feeds, loading, 385
elements, 373
casting, 397
creating, 375-377
ElementsBeforeSelf( )/ElementsAfterSelf( ) methods, 409
Extensions class, 391
files
creating, 34-36
loading, 536
parsing, 31-34
FirstFourPlanets.xml, 392-394
hierarchy, 372
IXmlLineInfo interface, 415
literals, 461-463
namespaces, 424-426
accidentally omitting, 436
default, 426-429
identifiers, 424
prefixes, 425
schema Validation, 458-459
XHTML, creating, 435
nodes
adding, 420-421
attributes, 420
deleting, 417-418
editing, 418-419
elements, 421
missing, 411-414
parent, 407-409
root, 371
schema validation, 451
document not well formed example, 452-453
document validity, 453
DTD specification, 453
namespaces, 458-459
validating example, 455-457
XSD files, 454
single node access, 401
text node searches, 405
transformations, 429
relational data into XML, 437-442
XHTML, creating, 431-437
XML between formats, 430-431
XML data into databases, 447-449
using directives, 376
ValidationEventArgs class, 457
XContainer class, 389-391
XDocument class compared to XElement class, 390
XElement class, 391
XmlSchemaSet class, 456
XNamespace class, 427
XNode class, 389-391
xmlns attribute, 425
XmlSchemaSet class, 456
XNamespace class, 427
XNode class, 389-391
XSD files, 454
yield returns, 172