مشخصات کتاب
-
Troy Magennis
-
2010
-
انگلیسی
-
29952
-
878
-
1
LINQ TO OBJECTS USING C# 4.0
CONTENTS
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
Chapter 1: Introducing LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
What Is LINQ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
The (Almost) Current LINQ Story . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
LINQ Code Makeover—Before and After Code Examples . . . . . . . . . . . 5
Benefits of LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Chapter 2: Introducing LINQ to Objects . . . . . . . . . . . . . . . . . . . . . 17
LINQ Enabling C# 3.0 Language Enhancements . . . . . . . . . . . . . . . . 17
LINQ to Objects Five-Minute Overview . . . . . . . . . . . . . . . . . . . . . . . 30
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Chapter 3: Writing Basic Queries . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Query Syntax Style Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
How to Filter the Results (Where Clause) . . . . . . . . . . . . . . . . . . . . . . 49
How to Change the Return Type (Select Projection) . . . . . . . . . . . . . . . 54
How to Return Elements When the Result
Is a Sequence (Select Many) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
How to Get the Index Position of the Results . . . . . . . . . . . . . . . . . . . 61
How to Remove Duplicate Results . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
How to Sort the Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Chapter 4: Grouping and Joining Data . . . . . . . . . . . . . . . . . . . . . . 75
How to Group Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
How to Join with Data in Another Sequence . . . . . . . . . . . . . . . . . . . 93
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Chapter 5: Standard Query Operators . . . . . . . . . . . . . . . . . . . . . 121
The Built-In Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Aggregation Operators—Working with Numbers . . . . . . . . . . . . . . . 123
Conversion Operators—Changing Types . . . . . . . . . . . . . . . . . . . . . 131
Element Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Equality Operator—SequenceEqual . . . . . . . . . . . . . . . . . . . . . . . . 153
Generation Operators—Generating Sequences of Data . . . . . . . . . . 155
Merging Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Partitioning Operators—Skipping and Taking Elements . . . . . . . . . . . 160
Quantifier Operators—All, Any, and Contains . . . . . . . . . . . . . . . . . 164
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Chapter 6: Working with Set Data . . . . . . . . . . . . . . . . . . . . . . . . 173
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
The LINQ Set Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
The HashSet<T> Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Chapter 7: Extending LINQ to Objects . . . . . . . . . . . . . . . . . . . . . 195
Writing a New Query Operator . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Writing a Single Element Operator . . . . . . . . . . . . . . . . . . . . . . . . . 196
Writing a Sequence Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Writing an Aggregate Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Writing a Grouping Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Chapter 8: C# 4.0 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Evolution of C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Optional Parameters and Named Arguments . . . . . . . . . . . . . . . . . . 234
Dynamic Typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
COM-Interop and LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Chapter 9: Parallel LINQ to Objects . . . . . . . . . . . . . . . . . . . . . . . 261
Parallel Programming Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Multi-Threading Versus Code Parallelism . . . . . . . . . . . . . . . . . . . . . 264
Parallelism Expectations, Hindrances, and Blockers . . . . . . . . . . . . . 267
LINQ Data Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Writing Parallel LINQ Operators . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Pro LINQ Language Integrated Query in C# 2008
نویسنده: Joseph C. Rattz, Jr
زبان: انگلیسی