All mistakes found in the second printing of LINQ in Action are posted here.
If you discover any mistakes in the book, you may post them as a comment here or in the forum.
The errata for the first printing is still available.
Chapter 1, page 15, first point in bulleted list
The (grammatical) subject of the sentence is "A good knowledge of the tools." So, "being able" refers to this knowledge being able to do something, which, of course, is not what is meant. We should write something like "... before you can use them efficiently ..."
Chapter 1, page 19, last sentence of section 1.2.3
It would be better to use a different verb than "seeing" here, because that is more what the reader does. "Showing you" would be a natural possibility. "Presenting" would be possible too, but may be a little too formal in comparison with the rest of the text.
Chapter 1, page 37, second sentence of section 1.6
"database" should be plural and "same" should be left out: "LINQ to SQL ... applies this concept to allow developers to query relational databases using the syntax that you have seen ..."
Chapter 1, page 37, last complete sentence on the page
"by ourselves" would be more correct than "by ourself"
Chapter 1, page 38, first sentence after heading "Entity classes," at the bottom of the page
"our application data" would be more consistent with the rest of the sentence than "your application data"
Chapter 1, page 41, first line of second bulleted list
"Queries explicitly written SQL in quotes" should be "Queries explicitly written in SQL as a string in quotes"
Chapter 2, page 51, last paragraph but one, second sentence
"In some cases, they're required to use LINQ features." could be "If you want to take advantage of some features of LINQ, you will have to use these keywords."
Chapter 2, page 53, first sentence
"In cases where a constructor is required or useful, it's still possible to use object initializers." should be "In cases where a parameterized constructor is required or useful, it's still possible to use object initializers."
Chapter 2, page 58, last paragraph
" ... the previous piece of code." is not correct. The previous piece of code is part of a digression about List.Find(). What is meant is "... listing 2.9."
Chapter 2, page 62, in the list of delegates given just above the middle of the page
The last delegate but one is missing a parameter (T3 arg3).
Chapter 2, page 69
"Process" should be "ProcessData". There are three places where it occurs: The first line of the page and, twice, in the sample code after the sentence "Here is how we would have to use it"
Chapter 2, page 69, first sentence of the second paragraph
"When a generic method is called without specifying type arguments" should be "When you call a generic method without specifying type arguments"
Chapter 2, page 69, OrderByDescending signature
The signature given says that OrderByDescending returns an IOrderedSequence<TSource> object. This is not true anymore in the RTM. The correct return type of OrderByDescending is IOrderedQueryable<TSource> or IOrderedEnumerable<TSource>, depending on the parent class.
Chapter 2, page 71, Listing 2.19
Listing 2.19 should point to ExtensionMethodsDiscoverability.csproj
Chapter 3, page 91, Listing 3.5
Listing 3.5 should point to QueryReuse.csproj
Chapter 4, page 128, Listing 4.8
The line "using LinqInAction.LinqBooks.Common;" is not needed. Correct this in the source code as well.
Chapter 4, pages 130, 135, 136 and 137
It looks like the content in the book for chapter 4 is out of sync with what Fabrice wrote for that chapter...
For example, in Fabrice's copy, instead of "In order to use the Book class and the sample data provided with this book, start by adding a reference to the LinqBooks.Common project." there is "In order to use the Book class and the sample data provided with this book, start by adding a reference to the LinqInAction.LinqBooks.Common.dll assembly."
Page 137, the text before section 4.4 is out of place. The text is mixed up and content may be missing.
Other pages in chapter 4 may be concerned by this. See also the comments from Ricky.
Chapter 4, page 140, last code block
IEnumerable<IEnumerable<Author>> should be IEnumerable<Author[]>
Chapter 6, page 212, section 6.1.2
If the index is correct, the last time we were concerned about connection strings was page 40, when dealing with the Northwind database. We need to let the reader now that we are now using the lia.mdf database and liaConnectionString.
We should guide the readers more about the databases and the
connection strings we use, here and potentially elsewhere in the book.
Chapter 6, page 213
Indicate that the tool is available in Visual Studio's Samples folder (at least for VS 2008 SP1): \Program Files\Microsoft Visual Studio 9.0\Samples\<lcid>\CSharpSamples\LinqSamples\QueryVisualizer.
Note also that the name of the generated DLL has changed.
Chapter 6, page 217, generated SQL at the bottom of the page
The generated SQL should include all fields since we selected book (not book.Title)
Chapter 6, page 225, Listing 6.19
joinedbook should be book. Twice.
Chapter 10, page 360, 10.1.5
Ancestors is the only current method that provides access to ancestor elements within the XML tree. AncestorNodes was either removed or that was a typo and was supposed to be just Ancestors.
(There is a DescendantNodes method that returns all XNode's that are descendants, and maybe there used to be a similar method for retrieving AncestorNodes.
Chapter 10, pages 367, 369, 371 and 373
Amazon has changed their authentication process. See http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?RequestAuthenticationArticle.html
Sample source code has been updated accordingly in the zip file and in the LINQPad examples.
See also Chapter 11 and Chapter 12 below.
Chapter 11, pages 408, 409, 410, 413, 414 and 425
Amazon has changed their authentication process. See the notes for Chapter 10 above.
Chapter 11, pages 420 and 422
The first paragraph talks about publishers.DefaultIfEmpty() then in the full code sample at the bottom of the page it's publishers.SingleOrDefault() that is used.
Same thing on page 422: talks about DefaultIfEmpty but uses SingleOrDefault in the code.
Chapter 11, pages 420, 421, 422 and 423
Page 420 (code located around the middle of the page), when a new Publisher is created, the ID should be set to Guid.NewGuid(), and not Guid.Empty, as currently.
The same problem exists in the other code snippets, until page 426 where the full source code is correct.
Chapter 12, pages 472, 473 and 474
Amazon has changed their authentication process. See the notes for Chapter 10 above.
Chapter 13, page 506, Note
See http://LinqInAction.net should be See http://manning.com/marguerie
Appendix “The standard query operators”, page 522
The Aggregation operators are listed in two tables when they could be listed in only one. My guess is that at one point the Aggregation operators table didn’t fit on one page and the table had to be broken into two tables but this does not seem to be a problem anymore so the two tables should be joined.