41554 blogs · [ { "id": "01a0c562-6d4a-7376-8200-7bd90908d161", "title": "Extension methods, explicitly implemented interfaces and collection initializers", "url": "https://codeblog.jonskeet.uk/2014/04/08/extension-methods-explicitly-implemented-interfaces-and-collection-initializers/", "published_at": "2014-04-08T10:49:00+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd909108d97", "title": "Quick brainteaser", "url": "https://codeblog.jonskeet.uk/2014/04/07/quick-brainteaser/", "published_at": "2014-04-07T16:03:43+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd90942283a", "title": "C# 6: First reactions", "url": "https://codeblog.jonskeet.uk/2014/04/04/c-6-first-reactions/", "published_at": "2014-04-04T16:38:31+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd9099d0f97", "title": "How many 32-bit types might we want?", "url": "https://codeblog.jonskeet.uk/2014/01/30/how-many-32-bit-types-might-we-want/", "published_at": "2014-01-30T18:25:28+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd90a556d62", "title": "Diagnosing issues with reversible data transformations", "url": "https://codeblog.jonskeet.uk/2014/01/20/diagnosing-issues-with-reversible-data-transformations/", "published_at": "2014-01-20T08:36:36+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd90af59db3", "title": "A tale of two puzzles", "url": "https://codeblog.jonskeet.uk/2014/01/14/a-tale-of-two-puzzles/", "published_at": "2014-01-14T08:00:03+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd90b42f002", "title": "Career and skills advice", "url": "https://codeblog.jonskeet.uk/2013/09/21/career-and-skills-advice/", "published_at": "2013-09-21T10:53:43+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd90c23a0b1", "title": "Casting vs “as” – embracing exceptions", "url": "https://codeblog.jonskeet.uk/2013/09/19/casting-vs-quot-as-quot-embracing-exceptions/", "published_at": "2013-09-19T12:38:41+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd90d15d2b7", "title": "Array covariance: not just ugly, but slow too", "url": "https://codeblog.jonskeet.uk/2013/06/22/array-covariance-not-just-ugly-but-slow-too/", "published_at": "2013-06-22T04:34:03+00:00" }, { "id": "01a0c562-6d4a-7376-8200-7bd90d28b17d", "title": "But what does it all mean?", "url": "https://codeblog.jonskeet.uk/2013/06/21/but-what-does-it-all-mean/", "published_at": "2013-06-21T01:00:57+00:00" }, { "id": "01a0c56a-1977-71fc-8fec-1aa0e47d385e", "title": "Book Review: Async in C# 5.0", "url": "https://codeblog.jonskeet.uk/2013/05/20/book-review-async-in-c-5-0/", "published_at": "2013-05-20T18:14:02+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb469775422b", "title": "New tool to play with: SemanticMerge", "url": "https://codeblog.jonskeet.uk/2013/04/18/new-tool-to-play-with-semanticmerge/", "published_at": "2013-04-18T16:38:23+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb46982f5d9d", "title": "The Open-Closed Principle, in review", "url": "https://codeblog.jonskeet.uk/2013/03/15/the-open-closed-principle-in-review/", "published_at": "2013-03-15T04:22:01+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb4699297331", "title": "C# in Depth 3rd edition available for early access, plus a discount code…", "url": "https://codeblog.jonskeet.uk/2013/02/16/c-in-depth-3rd-edition-available-for-early-access-plus-a-discount-code/", "published_at": "2013-02-16T08:31:54+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb46997af7b5", "title": "Fun with Object and Collection Initializers", "url": "https://codeblog.jonskeet.uk/2013/02/14/fun-with-object-and-collection-initializers/", "published_at": "2013-02-14T16:59:00+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb469a106ae3", "title": "Stack Overflow question checklist", "url": "https://codeblog.jonskeet.uk/2012/11/24/stack-overflow-question-checklist/", "published_at": "2012-11-24T03:22:28+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb469a8f27cf", "title": "Noda Time v1.0 released", "url": "https://codeblog.jonskeet.uk/2012/11/07/noda-time-v1-0-released/", "published_at": "2012-11-07T17:36:44+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb469aaad1a0", "title": "How can I enumerate thee? Let me count the ways…", "url": "https://codeblog.jonskeet.uk/2012/09/30/how-can-i-enumerate-thee-let-me-count-the-ways/", "published_at": "2012-09-30T13:58:21+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb469b493489", "title": "Stack Overflow and personal emails", "url": "https://codeblog.jonskeet.uk/2012/08/22/stack-overflow-and-personal-emails/", "published_at": "2012-08-22T12:51:24+00:00" }, { "id": "01a0c56a-1978-72c8-aafa-fb469c0cf80a", "title": "The future of “C# in Depth”", "url": "https://codeblog.jonskeet.uk/2012/08/04/the-future-of-quot-c-in-depth-quot/", "published_at": "2012-08-04T03:19:19+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457d62dd574", "title": "The perils of conditional mutability", "url": "https://codeblog.jonskeet.uk/2012/05/06/the-perils-of-conditional-mutability/", "published_at": "2012-05-06T08:58:45+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457d6ee61c6", "title": "More fun with DateTime", "url": "https://codeblog.jonskeet.uk/2012/05/02/more-fun-with-datetime/", "published_at": "2012-05-02T15:12:43+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457d72b4007", "title": "Type initializer circular dependencies", "url": "https://codeblog.jonskeet.uk/2012/04/07/type-initializer-circular-dependencies/", "published_at": "2012-04-07T04:35:45+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457d72b6c8a", "title": "Diagnosing weird problems – a Stack Overflow case study", "url": "https://codeblog.jonskeet.uk/2012/03/16/diagnosing-weird-problems-a-stack-overflow-case-study/", "published_at": "2012-03-16T01:31:00+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457d7d639df", "title": "Eduasync 20: Changes between the VS11 Preview and the Visual Studio 11 Beta", "url": "https://codeblog.jonskeet.uk/2012/03/06/eduasync-20-changes-between-the-vs11-preview-and-the-visual-studio-11-beta/", "published_at": "2012-03-06T13:54:54+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457d84ca63e", "title": "Subtleties in API design – member placement", "url": "https://codeblog.jonskeet.uk/2012/02/29/subtleties-in-api-design-member-placement/", "published_at": "2012-02-29T11:27:25+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457d92d5ce0", "title": "Currying vs partial function application", "url": "https://codeblog.jonskeet.uk/2012/01/30/currying-vs-partial-function-application/", "published_at": "2012-01-30T12:32:06+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457da26da01", "title": "Eduasync part 19: ordering by completion, ahead of time…", "url": "https://codeblog.jonskeet.uk/2012/01/16/eduasync-part-19-ordering-by-completion-ahead-of-time/", "published_at": "2012-01-16T16:22:43+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457da4a6b5f", "title": "Coding in the style of Glee", "url": "https://codeblog.jonskeet.uk/2012/01/15/coding-in-the-style-of-glee/", "published_at": "2012-01-15T14:07:55+00:00" }, { "id": "01a0c572-53ca-725d-b20a-6457daf45057", "title": "CodeMash 2012 report", "url": "https://codeblog.jonskeet.uk/2012/01/15/codemash-2012-report/", "published_at": "2012-01-15T13:38:42+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d28ae3af0", "title": "Eduasync part 18: Changes between the Async CTP and the Visual Studio 11 Preview", "url": "https://codeblog.jonskeet.uk/2012/01/11/eduasync-part-18-changes-between-the-async-ctp-and-the-visual-studio-11-preview/", "published_at": "2012-01-11T19:34:31+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d29919d53", "title": "Awaiting CodeMash 2012", "url": "https://codeblog.jonskeet.uk/2012/01/01/awaiting-codemash-2012/", "published_at": "2012-01-01T14:43:10+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2a067f64", "title": "Book Review: Fluent C# (Rebecca Riordan, Sams)", "url": "https://codeblog.jonskeet.uk/2011/12/05/book-review-fluent-c-rebecca-riordan-sams/", "published_at": "2011-12-05T13:26:25+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2afcb645", "title": "Eduasync part 17: unit testing", "url": "https://codeblog.jonskeet.uk/2011/11/25/eduasync-part-17-unit-testing/", "published_at": "2011-11-25T15:46:45+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2bc8f96b", "title": "Eduasync part 16: Example of composition: majority voting", "url": "https://codeblog.jonskeet.uk/2011/11/22/eduasync-part-16-example-of-composition-majority-voting/", "published_at": "2011-11-22T17:18:41+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2c314244", "title": "Eduasync part 15: implementing COMEFROM with a horrible hack", "url": "https://codeblog.jonskeet.uk/2011/11/11/eduasync-part-15-implementing-comefrom-with-a-horrible-hack/", "published_at": "2011-11-11T16:15:11+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2cee9859", "title": "Laptop review: Kobalt G150", "url": "https://codeblog.jonskeet.uk/2011/09/18/laptop-review-kobalt-g150/", "published_at": "2011-09-18T02:09:41+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2dd0a09d", "title": "Upcoming speaking engagements", "url": "https://codeblog.jonskeet.uk/2011/09/02/upcoming-speaking-engagements/", "published_at": "2011-09-02T11:53:17+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2dd7f485", "title": "Optimization and generics, part 2: lambda expressions and reference types", "url": "https://codeblog.jonskeet.uk/2011/08/22/optimization-and-generics-part-2-lambda-expressions-and-reference-types/", "published_at": "2011-08-22T18:06:18+00:00" }, { "id": "01a0c580-055f-711c-97c5-394d2ed74011", "title": "Optimization and generics, part 1: the new() constraint (updated: now with CLR v2 results)", "url": "https://codeblog.jonskeet.uk/2011/08/22/optimization-and-generics-part-1-the-new-constraint/", "published_at": "2011-08-22T16:57:55+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb2784f159a", "title": "Speaking engagement: Progressive .NET, London, September 7th", "url": "https://codeblog.jonskeet.uk/2011/07/28/speaking-engagement-progressive-net-london-september-7th/", "published_at": "2011-07-28T15:29:40+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb278c6933f", "title": "Eduasync part 14: Data passing in coroutines", "url": "https://codeblog.jonskeet.uk/2011/06/29/eduasync-part-14-data-passing-in-coroutines/", "published_at": "2011-06-29T12:18:20+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb278de4b32", "title": "Eduasync part 13: first look at coroutines with async", "url": "https://codeblog.jonskeet.uk/2011/06/22/eduasync-part-13-first-look-at-coroutines-with-async/", "published_at": "2011-06-22T15:37:30+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb279da1458", "title": "Eduasync part 12: Observing all exceptions", "url": "https://codeblog.jonskeet.uk/2011/06/22/eduasync-part-12-observing-all-exceptions/", "published_at": "2011-06-22T01:04:20+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb27a022d4f", "title": "Eduasync part 11: More sophisticated (but lossy) exception handling", "url": "https://codeblog.jonskeet.uk/2011/06/22/eduasync-part-11-more-sophisticated-but-lossy-exception-handling/", "published_at": "2011-06-22T00:25:46+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb27aa6a100", "title": "LINQ To Objects and the performance of nested “Where” calls", "url": "https://codeblog.jonskeet.uk/2011/06/16/linq-to-objects-and-the-performance-of-nested-quot-where-quot-calls/", "published_at": "2011-06-16T13:19:12+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb27b35cfff", "title": "Eduasync part 10: CTP bug – don’t combine multiple awaits in one statement…", "url": "https://codeblog.jonskeet.uk/2011/06/10/eduasync-part-10-ctp-bug-don-t-combine-multiple-awaits-in-one-statement/", "published_at": "2011-06-10T16:28:46+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb27b63a191", "title": "Eduasync part 9: generated code for multiple awaits", "url": "https://codeblog.jonskeet.uk/2011/05/30/eduasync-part-9-generated-code-for-multiple-awaits/", "published_at": "2011-05-30T15:06:10+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb27bc9159f", "title": "Eduasync part 8: generated code from a complex async method", "url": "https://codeblog.jonskeet.uk/2011/05/29/eduasync-part-8-generated-code-from-a-complex-async-method/", "published_at": "2011-05-29T13:30:12+00:00" }, { "id": "01a0c58e-1326-7344-8e31-bcb27bff5ebf", "title": "Eduasync part 7: generated code from a simple async method", "url": "https://codeblog.jonskeet.uk/2011/05/20/eduasync-part-7-generated-code-from-a-simple-async-method/", "published_at": "2011-05-20T13:21:02+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d8f527af0", "title": "Eduasync part 6: using the infrastructure manually", "url": "https://codeblog.jonskeet.uk/2011/05/20/eduasync-part-6-using-the-infrastructure-manually/", "published_at": "2011-05-20T08:36:28+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d8fa17abe", "title": "Eduasync part 5: making Task awaitable", "url": "https://codeblog.jonskeet.uk/2011/05/17/eduasync-part-5-making-task-lt-t-gt-awaitable/", "published_at": "2011-05-17T14:47:45+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d903fe5d1", "title": "Eduasync part 4: Filling in AsyncTaskMethodBuilder", "url": "https://codeblog.jonskeet.uk/2011/05/15/eduasync-part-4-filling-in-asynctaskmethodbuilder-lt-t-gt/", "published_at": "2011-05-15T14:21:00+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d912d7e8f", "title": "Eduasync part 3: the shape of the async method / awaitable boundary", "url": "https://codeblog.jonskeet.uk/2011/05/13/eduasync-part-3-the-shape-of-the-async-method-awaitable-boundary/", "published_at": "2011-05-13T16:56:14+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d922b1b1b", "title": "Eduasync part 2: the shape of the caller / async method boundary", "url": "https://codeblog.jonskeet.uk/2011/05/13/eduasync-part-2-the-shape-of-the-caller-async-method-boundary/", "published_at": "2011-05-13T14:35:37+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d9278d4f1", "title": "Eduasync part 1: introduction", "url": "https://codeblog.jonskeet.uk/2011/05/08/eduasync-part-1-introduction/", "published_at": "2011-05-08T15:05:32+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d92926a05", "title": "Of memory and strings", "url": "https://codeblog.jonskeet.uk/2011/04/05/of-memory-and-strings/", "published_at": "2011-04-05T15:50:47+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d92e6b776", "title": "Edulinq – the e-book", "url": "https://codeblog.jonskeet.uk/2011/03/18/edulinq-the-e-book/", "published_at": "2011-03-18T16:40:41+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d935f8afa", "title": "Reimplementing LINQ to Objects: Part 45 – Conclusion and List of Posts", "url": "https://codeblog.jonskeet.uk/2011/02/23/reimplementing-linq-to-objects-part-45-conclusion-and-list-of-posts/", "published_at": "2011-02-23T17:20:45+00:00" }, { "id": "01a0e6db-c379-71d2-9ac1-d60d93aef824", "title": "Reimplementing LINQ to Objects: Part 44 – Aspects of Design", "url": "https://codeblog.jonskeet.uk/2011/02/21/reimplementing-linq-to-objects-part-44-aspects-of-design/", "published_at": "2011-02-21T12:00:25+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab090d33f5", "title": "Reimplementing LINQ to Objects: Part 43 – Out-of-process queries with IQueryable", "url": "https://codeblog.jonskeet.uk/2011/02/20/reimplementing-linq-to-objects-part-43-out-of-process-queries-with-iqueryable/", "published_at": "2011-02-20T15:18:22+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab09f8dcba", "title": "C# in Depth 2nd edition: now available in mobi/epub (Kindle) format", "url": "https://codeblog.jonskeet.uk/2011/02/17/c-in-depth-2nd-edition-now-available-in-mobi-epub-kindle-format/", "published_at": "2011-02-17T05:51:10+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0ac33a1b", "title": "Reimplementing LINQ to Objects: Part 42 – More optimization", "url": "https://codeblog.jonskeet.uk/2011/01/30/reimplementing-linq-to-objects-part-42-more-optimization/", "published_at": "2011-01-30T23:55:12+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0b2753db", "title": "Reimplementing LINQ to Objects: Part 41 – How query expressions work", "url": "https://codeblog.jonskeet.uk/2011/01/28/reimplementing-linq-to-objects-part-41-how-query-expressions-work/", "published_at": "2011-01-28T00:22:54+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0b856438", "title": "Reimplementing LINQ to Objects: Part 40 – Optimization", "url": "https://codeblog.jonskeet.uk/2011/01/26/reimplementing-linq-to-objects-part-40-optimization/", "published_at": "2011-01-26T11:59:40+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0bd9c807", "title": "Reimplementing LINQ to Objects: Part 39 – Comparing implementations", "url": "https://codeblog.jonskeet.uk/2011/01/25/reimplementing-linq-to-objects-part-39-comparing-implementations/", "published_at": "2011-01-25T12:50:17+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0ca77aea", "title": "Reimplementing LINQ to Objects: Part 38 – What’s missing?", "url": "https://codeblog.jonskeet.uk/2011/01/22/reimplementing-linq-to-objects-part-38-what-s-missing/", "published_at": "2011-01-22T03:25:14+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0cf755af", "title": "Reimplementing LINQ to Objects: Part 37 – Guiding principles", "url": "https://codeblog.jonskeet.uk/2011/01/20/reimplementing-linq-to-objects-part-37-guiding-principles/", "published_at": "2011-01-20T02:09:10+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0de65026", "title": "Gotcha around iterator blocks", "url": "https://codeblog.jonskeet.uk/2011/01/18/gotcha-around-iterator-blocks/", "published_at": "2011-01-18T12:49:10+00:00" }, { "id": "01a0e6e8-aee7-70fa-b058-abab0ec80f51", "title": "Reimplementing LINQ to Objects: Part 36 – AsEnumerable", "url": "https://codeblog.jonskeet.uk/2011/01/14/reimplementing-linq-to-objects-part-36-asenumerable/", "published_at": "2011-01-14T16:17:11+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f769a8285", "title": "Reimplementing LINQ to Objects: Part 35 – Zip", "url": "https://codeblog.jonskeet.uk/2011/01/14/reimplementing-linq-to-objects-part-35-zip/", "published_at": "2011-01-14T15:44:38+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f7794a2da", "title": "Reimplementing LINQ to Objects: Part 34 – SequenceEqual", "url": "https://codeblog.jonskeet.uk/2011/01/14/reimplementing-linq-to-objects-part-34-sequenceequal/", "published_at": "2011-01-14T13:44:45+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f7864322a", "title": "Reimplementing LINQ to Objects: Part 33 – Cast and OfType", "url": "https://codeblog.jonskeet.uk/2011/01/13/reimplementing-linq-to-objects-part-33-cast-and-oftype/", "published_at": "2011-01-13T13:32:13+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f789a1859", "title": "Reimplementing LINQ to Objects: Part 32 – Contains", "url": "https://codeblog.jonskeet.uk/2011/01/12/reimplementing-linq-to-objects-part-32-contains/", "published_at": "2011-01-12T12:53:15+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f79424500", "title": "Reimplementing LINQ to Objects: Part 31 – ElementAt / ElementAtOrDefault", "url": "https://codeblog.jonskeet.uk/2011/01/11/reimplementing-linq-to-objects-part-31-elementat-elementatordefault/", "published_at": "2011-01-11T17:59:38+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f79a47b86", "title": "Reimplementing LINQ to Objects: Part 30 – Average", "url": "https://codeblog.jonskeet.uk/2011/01/10/reimplementing-linq-to-objects-part-30-average/", "published_at": "2011-01-10T14:59:13+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f79ef7e90", "title": "Reimplementing LINQ to Objects: Part 29 – Min/Max", "url": "https://codeblog.jonskeet.uk/2011/01/09/reimplementing-linq-to-objects-part-29-min-max/", "published_at": "2011-01-09T16:03:05+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f7a8d0b19", "title": "Reimplementing LINQ to Objects: Part 28 – Sum", "url": "https://codeblog.jonskeet.uk/2011/01/08/reimplementing-linq-to-objects-part-28-sum/", "published_at": "2011-01-08T09:15:36+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f7acff8fc", "title": "Reimplementing LINQ to Objects: Part 27 – Reverse", "url": "https://codeblog.jonskeet.uk/2011/01/08/reimplementing-linq-to-objects-part-27-reverse/", "published_at": "2011-01-08T03:44:50+00:00" }, { "id": "01a0e6fa-524f-70a4-844f-824f7b2788f7", "title": "Reimplementing LINQ to Objects: Part 26d – Fixing the key selectors, and yielding early", "url": "https://codeblog.jonskeet.uk/2011/01/07/reimplementing-linq-to-objects-part-26d-fixing-the-key-selectors-and-yielding-early/", "published_at": "2011-01-07T13:15:56+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a48c10f5d6", "title": "Reimplementing LINQ to Objects: Part 26c – Optimizing OrderedEnumerable", "url": "https://codeblog.jonskeet.uk/2011/01/06/reimplementing-linq-to-objects-part-26c-optimizing-orderedenumerable/", "published_at": "2011-01-06T13:04:09+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a48d026a87", "title": "Reimplementing LINQ to Objects: Part 26b – OrderBy{,Descending}/ThenBy{,Descending}", "url": "https://codeblog.jonskeet.uk/2011/01/05/reimplementing-linq-to-objects-part-26b-orderby-descending-thenby-descending/", "published_at": "2011-01-05T13:18:59+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a48ddb8756", "title": "Reimplementing LINQ to Objects: Part 26a – IOrderedEnumerable", "url": "https://codeblog.jonskeet.uk/2011/01/04/reimplementing-linq-to-objects-part-26a-iorderedenumerable/", "published_at": "2011-01-04T14:28:42+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a48eceac72", "title": "Reimplementing LINQ to Objects: Part 25 – ToDictionary", "url": "https://codeblog.jonskeet.uk/2011/01/02/reimplementing-linq-to-objects-todictionary/", "published_at": "2011-01-02T15:50:45+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a48f1b9a72", "title": "Reimplementing LINQ to Objects: Part 24 – ToArray", "url": "https://codeblog.jonskeet.uk/2011/01/02/reimplementing-linq-to-objects-part-24-toarray/", "published_at": "2011-01-02T14:45:12+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a48f80e8aa", "title": "Reimplementing LINQ to Objects: Part 23 – Take/Skip/TakeWhile/SkipWhile", "url": "https://codeblog.jonskeet.uk/2011/01/02/reimplementing-linq-to-objects-part-23-take-skip-takewhile-skipwhile/", "published_at": "2011-01-02T12:45:27+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a4903cbedb", "title": "Reimplementing LINQ to Objects: Part 22 – GroupJoin", "url": "https://codeblog.jonskeet.uk/2011/01/01/reimplementing-linq-to-objects-part-22-groupjoin/", "published_at": "2011-01-01T14:54:06+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a490d4b0e5", "title": "Reimplementing LINQ to Objects: Part 21 – GroupBy", "url": "https://codeblog.jonskeet.uk/2011/01/01/reimplementing-linq-to-objects-part-21-groupby/", "published_at": "2011-01-01T12:20:46+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a491c5176b", "title": "Reimplementing LINQ to Objects: Part 20 – ToList", "url": "https://codeblog.jonskeet.uk/2011/01/01/reimplementing-linq-to-objects-part-20-tolist/", "published_at": "2011-01-01T07:17:29+00:00" }, { "id": "01a0e70a-404a-72c5-b7ea-95a4922712ec", "title": "Reimplementing LINQ to Objects: Part 19 – Join", "url": "https://codeblog.jonskeet.uk/2010/12/31/reimplementing-linq-to-objects-part-19-join/", "published_at": "2010-12-31T14:24:44+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d109d3429", "title": "Reimplementing LINQ to Objects: Part 18 – ToLookup", "url": "https://codeblog.jonskeet.uk/2010/12/31/reimplementing-linq-to-objects-part-18-tolookup/", "published_at": "2010-12-31T07:43:59+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d11920c42", "title": "Reimplementing LINQ to Objects: Part 17 – Except", "url": "https://codeblog.jonskeet.uk/2010/12/30/reimplementing-linq-to-objects-part-17-except/", "published_at": "2010-12-30T16:01:58+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d124d96e4", "title": "Reimplementing LINQ to Objects: Part 16 – Intersect (and build fiddling)", "url": "https://codeblog.jonskeet.uk/2010/12/30/reimplementing-linq-to-objects-part-16-intersect-and-build-fiddling/", "published_at": "2010-12-30T15:39:20+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d1322fc26", "title": "Reimplementing LINQ to Objects: Part 15 – Union", "url": "https://codeblog.jonskeet.uk/2010/12/30/reimplementing-linq-to-objects-part-15-union/", "published_at": "2010-12-30T14:18:50+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d1341b4f6", "title": "Reimplementing LINQ to Objects: Part 14 – Distinct", "url": "https://codeblog.jonskeet.uk/2010/12/30/reimplementing-linq-to-objects-part-14-distinct/", "published_at": "2010-12-30T10:42:58+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d14356303", "title": "Reimplementing LINQ to Objects: Part 13 – Aggregate", "url": "https://codeblog.jonskeet.uk/2010/12/30/reimplementing-linq-to-objects-part-13-aggregate/", "published_at": "2010-12-30T07:39:19+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d14681d1a", "title": "Reimplementing LINQ to Objects: Part 12 – DefaultIfEmpty", "url": "https://codeblog.jonskeet.uk/2010/12/29/reimplementing-linq-to-objects-part-12-defaultifempty/", "published_at": "2010-12-29T15:59:22+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d14821deb", "title": "Reimplementing LINQ to Objects: Part 11 – First/Single/Last and the …OrDefault versions", "url": "https://codeblog.jonskeet.uk/2010/12/29/reimplementing-linq-to-objects-part-11-first-single-last-and-the-ordefault-versions/", "published_at": "2010-12-29T15:24:49+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d148f4d05", "title": "Reimplementing LINQ to Objects: Part 10 – Any and All", "url": "https://codeblog.jonskeet.uk/2010/12/28/reimplementing-linq-to-objects-part-10-any-and-all/", "published_at": "2010-12-28T14:48:21+00:00" }, { "id": "01a0e715-59a1-7149-adc3-457d14913e75", "title": "Reimplementing LINQ to Objects: Part 9 – SelectMany", "url": "https://codeblog.jonskeet.uk/2010/12/27/reimplementing-linq-to-objects-part-9-selectmany/", "published_at": "2010-12-27T13:13:31+00:00" } ] posts Claim your blog
Back to Jon Skeet
Blog · corpus.blog/blogs/codeblog.jonskeet.uk/posts

Jon Skeet

codeblog.jonskeet.uk

2014

2013

2012

2011

2010