<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Fabrice&amp;#39;s weblog : LINQ</title><link>http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx</link><description>Tags: LINQ</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>New LINQ tools category on SharpToolbox.com</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/10/03/new-linq-tools-category-on-sharptoolbox-com.aspx</link><pubDate>Sat, 03 Oct 2009 14:55:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7222358</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=7222358</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/10/03/new-linq-tools-category-on-sharptoolbox-com.aspx#comments</comments><description>&lt;p&gt;I've just moved the LINQ tools referenced on SharpToolbox.com to a new &lt;a href="http://SharpToolbox.com/categories/linq" mce_href="http://SharpToolbox.com/categories/linq"&gt;dedicated LINQ category&lt;/a&gt;.&lt;br&gt;20 tools and providers are listed for the moment. I'll add more shortly.&lt;/p&gt;&lt;p&gt;See &lt;a href="http://www.thinqlinq.com/Post.aspx/PostId/22076" tooltip="linkalert-tip" mce_href="http://www.thinqlinq.com/Post.aspx/PostId/22076"&gt;Jim's blog&lt;/a&gt; for more resources.&lt;br&gt;&lt;/p&gt;
&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/" tooltip="linkalert-tip"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7222358" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/_2800_Sharp_7C00_Java_2900_Toolbox/default.aspx">(Sharp|Java)Toolbox</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Tools/default.aspx">Tools</category></item><item><title>LINQ in Action XML samples now in LINQPad too</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/06/28/linq-in-action-xml-samples-now-in-linqpad-too.aspx</link><pubDate>Sun, 28 Jun 2009 20:58:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7136054</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=7136054</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/06/28/linq-in-action-xml-samples-now-in-linqpad-too.aspx#comments</comments><description>&lt;p&gt;After &lt;a href="http://linqinaction.net/blogs/main/archive/2009/06/06/linq-in-action-samples-in-linqpad.aspx" mce_href="http://linqinaction.net/blogs/main/archive/2009/06/06/linq-in-action-samples-in-linqpad.aspx"&gt;we published the code samples for LINQ in Action's first chapters in LINQPad&lt;/a&gt; a few weeks ago, the samples of three more chapters have just been added. These chapters cover LINQ to XML. Thanks &lt;a href="http://www.thinqlinq.com/Default/LINQ-in-Action-XML-samples-added-to-LINQPad.aspx" mce_href="http://www.thinqlinq.com/Default/LINQ-in-Action-XML-samples-added-to-LINQPad.aspx"&gt;Jim&lt;/a&gt; for doing the additional conversion.&lt;br&gt;&lt;/p&gt;&lt;p&gt;The code samples for chapters 1 to 11 are now available. Read &lt;a href="http://linqinaction.net/blogs/main/archive/2009/06/06/linq-in-action-samples-in-linqpad.aspx" mce_href="http://linqinaction.net/blogs/main/archive/2009/06/06/linq-in-action-samples-in-linqpad.aspx"&gt;the original announcement&lt;/a&gt; to learn how to download and use these samples. A new download is enough to get the update.&lt;br&gt;&lt;/p&gt;
&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7136054" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Source/default.aspx">Source</category></item><item><title>LINQ in Action samples in LINQPad</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/06/06/linq-in-action-samples-in-linqpad.aspx</link><pubDate>Sat, 06 Jun 2009 13:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7109662</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=7109662</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/06/06/linq-in-action-samples-in-linqpad.aspx#comments</comments><description>&lt;a href="http://linqpad.net" mce_href="http://linqpad.net"&gt;&lt;img src="http://linqinaction.net/photos/main/images/4804/original.aspx" title="LINQPad logo" alt="LINQPad logo" mce_src="http://linqinaction.net/photos/main/images/4804/original.aspx" style="float: right; margin-left: 5px; margin-bottom: 5px;" width="150" border="0" height="144"&gt;&lt;/a&gt;

&lt;p&gt;Do you know &lt;a href="http://linqpad.net/" mce_href="http://linqpad.net/"&gt;LINQPad&lt;/a&gt;? It's a really simple but great tool for testing LINQ queries. Not only that, but it can be used to test all kinds of C# and VB code snippets.&lt;/p&gt;

&lt;p&gt;Another great thing about LINQPad is that it comes with code samples. Until now the integrated code samples came from the &lt;a href="http://www.albahari.com/nutshell/" mce_href="http://www.albahari.com/nutshell/"&gt;C# 3.0 in a Nutshell&lt;/a&gt; book. Joe Albahari, author of LINQPad and C# 3.0 in a Nutshell, has opened LINQPad so that code samples from other books can be integrated into LINQPad. Thanks Joe for this opportunity!&lt;/p&gt;

&lt;p&gt;We worked with Joe to integrate LINQ in Action's code samples into LINQPad. The result is that in addition to being &lt;a href="http://linqinaction.net/files/folders/linqinaction/entry1952.aspx" mce_href="http://linqinaction.net/files/folders/linqinaction/entry1952.aspx"&gt;available as Visual Studio solutions and projects&lt;/a&gt;, you can now run our code samples directly from LINQPad. This makes it very easy to explore LINQ's features with instant "code and play".&lt;/p&gt;

&lt;p&gt;To install LINQ in Action's code samples in LINQPad, all you have to do is click on the "Download more samples..." link:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://linqinaction.net/photos/main/images/4805/original.aspx" mce_src="http://linqinaction.net/photos/main/images/4805/original.aspx" width="587" height="294"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;You'll see LINQ in Action proposed as one of the LINQPad-enabled books (the only one at the moment, in fact):&lt;/p&gt;
&lt;p&gt;&lt;img src="http://linqinaction.net/photos/main/images/4806/original.aspx" mce_src="http://linqinaction.net/photos/main/images/4806/original.aspx" width="500" height="355"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Once you've clicked on "Download full code listings into LINQPad", you should see the C# and VB samples grouped by chapter:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://linqinaction.net/photos/main/images/4807/original.aspx" mce_src="http://linqinaction.net/photos/main/images/4807/original.aspx"&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Currently, chapters 1 to 8 are available. We'll integrate the remaining code samples soon.&lt;/p&gt;

&lt;p&gt;Have fun with LINQ! &lt;br&gt;&lt;/p&gt;

&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7109662" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Source/default.aspx">Source</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Tools/default.aspx">Tools</category></item><item><title>ForEach debate continued</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/05/21/foreach-debate-continued.aspx</link><pubDate>Thu, 21 May 2009 10:04:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7094047</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=7094047</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/05/21/foreach-debate-continued.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/ericlippert" mce_href="http://blogs.msdn.com/ericlippert"&gt;Eric Lippert&lt;/a&gt;, whose blog you shouldn't miss, adds his own arguments to &lt;a href="http://linqinaction.net/blogs/main/archive/2009/02/25/foreach-or-not-foreach-that-is-the-question.aspx" mce_href="http://linqinaction.net/blogs/main/archive/2009/02/25/foreach-or-not-foreach-that-is-the-question.aspx"&gt;the debate&lt;/a&gt; about whether using a &lt;i&gt;ForEach&lt;/i&gt; extension method instead of &lt;i&gt;foreach&lt;/i&gt; is a good idea or a bad one.&lt;/p&gt;&lt;p&gt;I don't see a definitive answer to the question. All the arguments given here and elsewhere are good, but in the end, it's up to you to decide what you prefer to do.&lt;br&gt;Read the posts and the comments to make up your own mind.&lt;br&gt;&lt;/p&gt;
&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7094047" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Opinions/default.aspx">Opinions</category></item><item><title>LINQ em Ação, LINQ in Action in Portuguese</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/05/20/linq-em-a-231-227-o-linq-in-action-in-portuguese.aspx</link><pubDate>Wed, 20 May 2009 14:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7093554</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=7093554</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/05/20/linq-em-a-231-227-o-linq-in-action-in-portuguese.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.lcm.com.br/index.php?Escolha=20&amp;amp;Livro=L00714" mce_href="http://www.lcm.com.br/index.php?Escolha=20&amp;amp;Livro=L00714"&gt;&lt;img src="http://linqinaction.net/photos/main/images/4792/original.aspx" title="LINQ em Ação" alt="LINQ em Ação" mce_src="http://linqinaction.net/photos/main/images/4792/original.aspx" vspace="2" width="216" align="right" border="0" height="303" hspace="5"&gt;&lt;/a&gt;After English, &lt;a href="http://linqinaction.net/blogs/main/archive/2008/08/28/linq-im-einsatz-linq-in-action-in-german.aspx" mce_href="http://linqinaction.net/blogs/main/archive/2008/08/28/linq-im-einsatz-linq-in-action-in-german.aspx"&gt;German&lt;/a&gt; and &lt;a href="http://linqinaction.net/blogs/main/archive/2009/04/17/linq-in-action-in-spanish.aspx" mce_href="http://linqinaction.net/blogs/main/archive/2009/04/17/linq-in-action-in-spanish.aspx"&gt;Spanish&lt;/a&gt;, &lt;a href="http://linqinaction.net" mce_href="http://linqinaction.net"&gt;LINQ in Action&lt;/a&gt; is now available &lt;span style="font-style: italic;"&gt;em Português&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;The title is &lt;a href="http://www.lcm.com.br/index.php?Escolha=20&amp;amp;Livro=L00714" mce_href="http://www.lcm.com.br/index.php?Escolha=20&amp;amp;Livro=L00714"&gt;LINQ em Ação&lt;/a&gt;. The publisher is &lt;a href="http://www.lcm.com.br" mce_href="http://www.lcm.com.br"&gt;Editora Ciência Moderna&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7093554" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ Deep Dive: great LINQ tips</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/04/03/linq-deep-dive-great-linq-tips.aspx</link><pubDate>Fri, 03 Apr 2009 09:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7024043</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=7024043</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/04/03/linq-deep-dive-great-linq-tips.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/zeeshanhirani/" mce_href="http://weblogs.asp.net/zeeshanhirani/"&gt;Zeeshan Hirani&lt;/a&gt; who already offered us &lt;a href="http://weblogs.asp.net/zeeshanhirani/archive/2008/12/18/my-christmas-present-to-the-entity-framework-community.aspx" mce_href="http://weblogs.asp.net/zeeshanhirani/archive/2008/12/18/my-christmas-present-to-the-entity-framework-community.aspx"&gt;a 500-page Entity Framework learning guide&lt;/a&gt;, now publishes &lt;a href="http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp" mce_href="http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp"&gt;great LINQ tips in the first part of his LINQ Deep Dive articles&lt;/a&gt;.
These tips are not the usual introductions to LINQ features you can
find elsewhere. You can tell that they come from someone who lives in
the trenches. I learnt very interesting features and best practices I
didn't know about. &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Apply filters before a join to improve query performance&lt;/li&gt;&lt;li&gt;Filter LINQ queries using object reference comparison&lt;/li&gt;&lt;li&gt;Apply aggregates to empty collections in LINQ to SQL queries&lt;/li&gt;&lt;li&gt;Delay loading a property in LINQ to SQL&lt;/li&gt;&lt;li&gt;Use table-valued functions with eager loading turned on&lt;/li&gt;&lt;li&gt;Put joins in the correct order in a LINQ to Objects query&lt;/li&gt;&lt;li&gt;Compose a LINQ query inside a loop&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;a href="http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp" mce_href="http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp"&gt;LINQ Deep Dive: Part I, Tips for Delving in to LINQ&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/" mce_href="http://LinqInAction.net"&gt;http://LinqInAction.net&lt;/a&gt;&lt;/i&gt; &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7024043" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Tips/default.aspx">Tips</category></item><item><title>ForEach or not ForEach, that is the question</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/02/25/foreach-or-not-foreach-that-is-the-question.aspx</link><pubDate>Wed, 25 Feb 2009 18:20:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6926186</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6926186</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/02/25/foreach-or-not-foreach-that-is-the-question.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169" mce_href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169"&gt;LINQ in Action&lt;/a&gt;, we discuss about the missing &lt;b&gt;ForEach&lt;/b&gt;
query operator. This is in Chapter 5 "Beyond basic in-memory queries",
more precisely in section 5.2.2. There, we indicate that &lt;a href="http://blogs.msdn.com/ericwhite" mce_href="http://blogs.msdn.com/ericwhite"&gt;Eric White&lt;/a&gt; suggested this operator in &lt;a href="http://blogs.msdn.com/ericwhite/pages/FP-Tutorial.aspx" mce_href="http://blogs.msdn.com/ericwhite/pages/FP-Tutorial.aspx"&gt;his functional programming tutorial&lt;/a&gt;, although I'm not able to find the exact reference at the moment in this tutorial.&lt;/p&gt;
&lt;p&gt;Since then, a lot of people have been asking for ForEach. &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/01/31/foreach.aspx" mce_href="http://blogs.msdn.com/kirillosenkov/archive/2009/01/31/foreach.aspx"&gt;This can be seen on Kirill Osenkov's blog&lt;/a&gt;, where you'll find links to discussions about whether ForEach is good or bad.&lt;br&gt;I don't know if we're going to see ForEach appear in .NET. Anyway, it's not very difficult to write your own:&lt;/p&gt;
&lt;p style="font-family: courier new; color: Navy;"&gt;public static void ForEach&amp;lt;T&amp;gt;(this IEnumerable&amp;lt;T&amp;gt; source, Action&amp;lt;T&amp;gt; action)&lt;br&gt;{&lt;br&gt;&amp;nbsp; if (source == null)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ArgumentNullException("source");&lt;br&gt;&amp;nbsp; if (action == null)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ArgumentNullException("action");&lt;br&gt;&lt;br&gt;&amp;nbsp; foreach (var item in source)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; action(item);&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Cross-posted from &lt;a href="http://LinqInAction.net" mce_href="http://LinqInAction.net"&gt;http://LinqInAction.net&lt;/a&gt;&lt;/i&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6926186" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Source/default.aspx">Source</category></item><item><title>Converting LINQ queries from query syntax to method/operator syntax</title><link>http://weblogs.asp.net/fmarguerie/archive/2009/02/06/converting-linq-queries-from-query-syntax-to-method-operator-syntax.aspx</link><pubDate>Fri, 06 Feb 2009 17:11:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6889343</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6889343</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2009/02/06/converting-linq-queries-from-query-syntax-to-method-operator-syntax.aspx#comments</comments><description>&lt;p&gt;Yesterday a reader of the &lt;a href="http://linq-book.com" mce_href="http://linq-book.com"&gt;LINQ in Action book&lt;/a&gt; posted an &lt;a href="http://www.manning-sandbox.com/thread.jspa?messageID=81167" mce_href="http://www.manning-sandbox.com/thread.jspa?messageID=81167"&gt;interesting challenge&lt;/a&gt; on &lt;a href="http://www.manning-sandbox.com/forum.jspa?forumID=302&amp;amp;start=0" mce_href="http://www.manning-sandbox.com/forum.jspa?forumID=302&amp;amp;start=0"&gt;the book's forum&lt;/a&gt;. It's interesting enough to be reposted it here.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The request was to convert a LINQ query expression (query syntax) to
a query operator call chain (method syntax or dot notation). The
original query was the following one:&lt;br&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style="font-family: courier new; color: Navy;"&gt;from publisher in SampleData.Publishers&lt;br&gt;      join book in SampleData.Books on publisher equals book.Publisher into publisherBooks&lt;br&gt;      from book in publisherBooks.DefaultIfEmpty()&lt;br&gt;      select new&lt;br&gt;      {&lt;br&gt;&amp;nbsp; Publisher = publisher.Name,&lt;br&gt;&amp;nbsp; Book = book == default(Book) ? "(no books)" : book.Title&lt;br&gt;      };&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This query comes from LINQ in Action. In chapter 4 more precisely, where we cover grouping and joins.&lt;/p&gt;
&lt;p&gt;Converting LINQ queries is an interesting exercise because it's not
always easy to find the solution but you learn a lot in the process.
Often, you'll have to use "tricks". Here the tricks are based on the
use of anonymous types. Side note: this is also what you'd use to
translate the &lt;i&gt;let&lt;/i&gt; keyword.&lt;br&gt;&lt;br&gt;Here is the solution I gave:&lt;/p&gt;&lt;blockquote&gt;&lt;p style="font-family: courier new; color: Navy;"&gt;SampleData.Publishers&lt;br&gt;&amp;nbsp; .GroupJoin(SampleData.Books,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; publisher =&amp;gt; publisher, book =&amp;gt; book.Publisher,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (publisher, publisherBooks) =&amp;gt; new { Publisher = publisher, PublisherBooks = publisherBooks })&lt;br&gt;&amp;nbsp; .SelectMany(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; group =&amp;gt; group.PublisherBooks.DefaultIfEmpty&amp;lt;Book&amp;gt;(),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (group, book) =&amp;gt; new {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Publisher = group.Publisher.Name,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Book = (book == null) ? "(no books)" : book.Title&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Not as easy to read as your original query, don't you think? See my previous post about &lt;a href="http://linqinaction.net/blogs/main/archive/2008/01/20/query-syntax-vs-method-syntax.aspx" mce_href="http://linqinaction.net/blogs/main/archive/2008/01/20/query-syntax-vs-method-syntax.aspx"&gt;Query syntax vs. Method syntax&lt;/a&gt; to decide which syntax is best for you.&lt;br&gt;&lt;br&gt;"How did he manage to convert the query," you may be wondering... Well, even if I know the tricks, the easiest is to use &lt;a href="http://www.red-gate.com/products/reflector/" mce_href="http://www.red-gate.com/products/reflector/"&gt;.NET Reflector&lt;/a&gt; to decompile the IL.&lt;br&gt;If you specify ".NET 3.5" for the &lt;i&gt;Optimization&lt;/i&gt;
option, you'll see the query expression. But if you specify ".NET 2.0",
you'll see something that looks close to the above query. You'll have
to replace the anonymous methods with lambda expressions and change the
name of the anonymous parameters to make the code somewhat more
readable, though.&lt;br&gt;&lt;br&gt;As usual, Reflector is your best friend. It reveals a lot of secrets ;-)&lt;/p&gt;&lt;p&gt;&lt;span style="color: Green; font-weight: bold;"&gt;Update:&lt;/span&gt; Joe Albahari, of &lt;a href="http://www.linqpad.net/" mce_href="http://www.linqpad.net/"&gt;LINQPad&lt;/a&gt; fame, suggested other solutions:&lt;/p&gt;

&lt;blockquote&gt;1) Calling &lt;b&gt;.ToString()&lt;/b&gt; on the query's expression will work just fine if you add AsQueryable() to the first sequence: &lt;i&gt;from publisher in SampleData.Publishers&lt;b&gt;.AsQueryable()&lt;/b&gt; join book...&lt;/i&gt;&lt;br&gt;2)
If you use LINQPad to run the query, you'll notice it shows lambda
translations for all IQueryable-based queries. LINQPad uses its own
expression visitor so the result is much more readable than simply
calling ToString on the expression.&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-style: italic;"&gt;Crossposted from &lt;/span&gt;&lt;a href="http://LinqInAction.net" style="font-style: italic;" mce_href="http://LinqInAction.net"&gt;http://LinqInAction.net&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6889343" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Speaking for the Communauté .NET Montréal next Monday</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/11/24/speaking-for-the-communaut-233-net-montr-233-al-next-monday.aspx</link><pubDate>Sun, 23 Nov 2008 23:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6750899</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6750899</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2008/11/24/speaking-for-the-communaut-233-net-montr-233-al-next-monday.aspx#comments</comments><description>&lt;p&gt;In addition to &lt;a href="http://weblogs.asp.net/fmarguerie/archive/2008/09/25/speaking-at-devteach-montreal-in-december.aspx" mce_href="http://weblogs.asp.net/fmarguerie/archive/2008/09/25/speaking-at-devteach-montreal-in-december.aspx"&gt;speaking at DevTeach Montreal next week&lt;/a&gt;, Frédéric Schäfer and I will also give &lt;a href="http://www.dotnetmontreal.com/dnn/Accueil/tabid/36/ModuleID/398/ItemID/14/mctl/EventDetails/selecteddate/2008-12-01/language/fr-CA/Default.aspx" mce_href="http://www.dotnetmontreal.com/dnn/Accueil/tabid/36/ModuleID/398/ItemID/14/mctl/EventDetails/selecteddate/2008-12-01/language/fr-CA/Default.aspx"&gt;a demonstration of LINQ, Entity Framework and WPF in action to the Communauté .NET Montréal&lt;/a&gt; next Monday. This will be in French.&lt;br&gt;A bientôt à Montréal et DevTeach !&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.dotnetmontreal.com" mce_href="http://www.dotnetmontreal.com"&gt;&lt;img src="http://weblogs.asp.net/blogs/fmarguerie/Communaute-DotNet-Montreal.png" mce_src="http://weblogs.asp.net/blogs/fmarguerie/Communaute-DotNet-Montreal.png" width="150" border="0" height="92"&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://devteach.com" mce_href="http://devteach.com"&gt;&lt;img src="http://weblogs.asp.net/blogs/fmarguerie/DevTeach-Montreal-2008.jpg" mce_src="http://weblogs.asp.net/blogs/fmarguerie/DevTeach-Montreal-2008.jpg" width="125" border="0" height="125"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;PS: &lt;a href="http://www.devteach.com/WhoShouldAttend.aspx" mce_href="http://www.devteach.com/WhoShouldAttend.aspx"&gt;Why should you go to DevTeach&lt;/a&gt;?&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6750899" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>IQToolkit, building your own LINQ IQueryable provider</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/11/23/iqtoolkit-building-your-own-linq-iqueryable-provider.aspx</link><pubDate>Sat, 22 Nov 2008 23:59:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6750302</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6750302</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2008/11/23/iqtoolkit-building-your-own-linq-iqueryable-provider.aspx#comments</comments><description>&lt;P&gt;Matt Warren, who provides &lt;A class="" href="http://blogs.msdn.com/mattwar/pages/linq-links.aspx" mce_href="http://blogs.msdn.com/mattwar/pages/linq-links.aspx"&gt;the most detailed&amp;nbsp;HOWTO for creating your own LINQ IQueryable provider&lt;/A&gt;, has now &lt;A class="" href="http://blogs.msdn.com/mattwar/archive/2008/11/21/linq-iqtoolkit-on-codeplex.aspx" mce_href="http://blogs.msdn.com/mattwar/archive/2008/11/21/linq-iqtoolkit-on-codeplex.aspx"&gt;published a dedicated toolkit on CodePlex&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;IQToolkit is essential if you are building your own LINQ IQueryable provider. It contains common tools and source code you can apply to your own project.&lt;BR&gt;In the toolkit you will find useful techniques for manipulating LINQ expression trees, implementing IQueryable providers, and a host of extensible components for building providers that target translation of LINQ expressions into SQL like languages.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://www.codeplex.com/IQToolkit"&gt;http://www.codeplex.com/IQToolkit&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Creating&amp;nbsp;a LINQ provider is not a walk in the park, but at least if you have to, you have everything you need at hand.&lt;/P&gt;&lt;BR&gt;&lt;I&gt;Cross-posted from &lt;A href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/A&gt;&lt;/I&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6750302" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Using the Select LINQ query operator with indexes</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/11/10/using-the-select-linq-query-operator-with-indexes.aspx</link><pubDate>Mon, 10 Nov 2008 22:40:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6728839</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6728839</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2008/11/10/using-the-select-linq-query-operator-with-indexes.aspx#comments</comments><description>&lt;p&gt;Yesterday, &lt;a href="http://linqinaction.net/blogs/main/archive/2008/09/25/speaking-at-devteach-montreal-in-december.aspx" mce_href="http://linqinaction.net/blogs/main/archive/2008/09/25/speaking-at-devteach-montreal-in-december.aspx"&gt;Fred&lt;/a&gt;
asked me if I could help him to convert C# code to LINQ. The solution
may not obvious to find unless you know LINQ well. I will reproduce
here the solution I gave Fred. Whether the LINQ version of the code is
easier to read than the original one is arguable. The purpose here is
more to show LINQ's &lt;i&gt;Select&lt;/i&gt; query operator in action.&lt;/p&gt;

&lt;p&gt;Here is the original code:&lt;/p&gt;

&lt;pre style="font-family: courier new; color: Navy;"&gt;int CountCorrectChars(string proposedValue, string correctValue)&lt;br&gt;{&lt;br&gt;&amp;nbsp; int correctCount = 0;&lt;br&gt;&amp;nbsp; for (int i=0; i &amp;lt; proposedValue.Length &amp;amp;&amp;amp; i &amp;lt; correctValue.Length; i++)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (proposedValue[i] == correctValue[i])&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; correctCount++;&lt;br&gt;&amp;nbsp; return correctCount;&lt;br&gt;}&lt;/pre&gt;

&lt;p&gt;Here is the LINQ version that I suggested:&lt;br&gt;&lt;/p&gt;

&lt;pre style="font-family: courier new; color: Navy;"&gt;int CountCorrectChars(string proposedValue, string correctValue)&lt;br&gt;{&amp;nbsp;&amp;nbsp;&lt;br&gt;  return correctValue&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Select((testChar, index) =&amp;gt; new {Character=testChar, Index=index})&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Count(testChar =&amp;gt; (testChar.Index &amp;lt; proposedValue.Length)&lt;br&gt;      &amp;amp;&amp;amp; (testChar.Character == proposedValue[testChar.Index]));&lt;br&gt;}&lt;br&gt;&lt;/pre&gt;

&lt;p&gt;As you can see, the LINQ version is not so easy to understand and is
verbose. Of course, we could use shorter names, but that wouldn't
change the complexity of the query. The LINQ version is not as good in
terms of performance either... So, should we use LINQ or not? My point
here is that LINQ is not a "one size fits all" solution. You should use
it wisely and avoid complexifying code by choosing always to use LINQ.&lt;/p&gt;

&lt;p&gt;What's interesting in this example, is also simply the use of &lt;i&gt;Select&lt;/i&gt;
with a two-parameter lambda expression. You may know the version of
Select that takes a single-parameter lambda well, but its counterpart
is less known (and used).&lt;/p&gt;

&lt;p&gt;This is something that we cover in &lt;a href="http://linq-book.com" mce_href="http://linq-book.com"&gt;LINQ in Action&lt;/a&gt; in section 4.4.2. Here is what we write there, which gives another example of &lt;i&gt;Select&lt;/i&gt; in action:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;i&gt;Select&lt;/i&gt; and &lt;i&gt;SelectMany&lt;/i&gt; operators can be used to
retrieve the index of each element in a sequence. Let’s say we want to
display the index of each book in our collection before we sort them in
alphabetical order:&lt;br&gt;&lt;/p&gt;
&lt;div style="color: Navy;"&gt;index=3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title=All your base are belong to us&lt;br&gt;index=4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title=Bonjour mon Amour&lt;br&gt;index=2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title=C# on Rails&lt;br&gt;index=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title=Funny Stories&lt;br&gt;index=1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title=LINQ rules&lt;/div&gt;&lt;br&gt;Here is how to use &lt;i&gt;Select&lt;/i&gt; to achieve that:&lt;br&gt;
&lt;br&gt;
Listing 4.15&amp;nbsp;&amp;nbsp;&amp;nbsp; Code-behind for the first ASP.NET page&amp;nbsp;&amp;nbsp;&amp;nbsp; (SelectIndex.csproj)&lt;br&gt;&lt;div style="font-family: courier new; color: Navy;"&gt;var books =&lt;br&gt;&amp;nbsp; SampleData.Books&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Select((book, index) =&amp;gt; new { index, book.Title })&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .OrderBy(book =&amp;gt; book.Title);&lt;br&gt;ObjectDumper.Write(books);&lt;/div&gt;&lt;br&gt;This time we can’t use the query expression syntax because the variant of the &lt;i&gt;Select&lt;/i&gt; operator that provides the index has no equivalent in this syntax. Notice that this version of the &lt;i&gt;Select&lt;/i&gt; method provides an &lt;i&gt;index&lt;/i&gt; variable that we can use in our lambda expression &lt;span style="color: Navy;"&gt;(precision
not in the book: its not the name "index" that is important. You can
use another name if you want. What makes the difference is that the
lambda expression takes two parameters)&lt;/span&gt;. The compiler automatically determines which version of the &lt;i&gt;Select&lt;/i&gt; operator we want to use just by looking at the presence or absence of the &lt;i&gt;index&lt;/i&gt; parameter. Notice also that we call &lt;i&gt;Select&lt;/i&gt; before &lt;i&gt;OrderBy&lt;/i&gt;. This is important to get the indices before the books are sorted, not after. &lt;br&gt;
&lt;/blockquote&gt;

&lt;p&gt;...One more tool in your toolbox. Now, use it wisely.&lt;/p&gt;&lt;p&gt;&lt;font color="#006600"&gt;Update:&lt;/font&gt; Mark Sowul suggests a simpler solution:&lt;br&gt;&lt;/p&gt;&lt;blockquote&gt;return correctValue.Where((testChar, index) =&amp;gt; index &amp;lt; proposedValue.Length &amp;amp;&amp;amp; testChar == proposedValue[index]).Count();&lt;/blockquote&gt;Somehow I missed that Where overload.&amp;nbsp;

&lt;p&gt;&lt;i&gt;Cross-posted from &lt;a href="http://LinqInAction.net" mce_href="http://LinqInAction.net"&gt;http://LinqInAction.net&lt;/a&gt;&lt;/i&gt;&lt;br&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6728839" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Speaking at DevTeach Montreal in December</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/09/25/speaking-at-devteach-montreal-in-december.aspx</link><pubDate>Thu, 25 Sep 2008 18:11:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6641677</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6641677</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2008/09/25/speaking-at-devteach-montreal-in-december.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.devteach.com" mce_href="http://www.devteach.com"&gt;DevTeach&lt;/a&gt; Montréal will take place this year between December 1 and 5. I have the pleasure to take part to this event and speak in no less than five sessions!&lt;/p&gt;

&lt;p&gt;Here are my sessions, all in French:&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tout d'abord une série de quatre sessions que j'ai le plaisir de présenter avec Frédéric Schäfer. Il s'agit d'une reprise enrichie de &lt;a href="http://weblogs.asp.net/fmarguerie/archive/2008/04/10/universit-233-du-si-octo-technology.aspx" mce_href="http://weblogs.asp.net/fmarguerie/archive/2008/04/10/universit-233-du-si-octo-technology.aspx"&gt;notre session de l'Université du SI&lt;/a&gt;.&lt;br&gt;Ces sessions vous permettrons de découvrir LINQ, Entity Framework, WPF, Silverlight et WCF en action.&lt;br&gt; Il n'est pas nécessaire d'assister à l'ensemble des quatre sessions. Vous pouvez très bien n'assister qu'à certaines sessions. Nous fournirons un bref récapitulatif des épisodes précédents au début de chaque session.&lt;br&gt;&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;Application Order Tracking - 1/4 - &lt;b&gt;Créer un modèle métier testé avec Entity Framework et manipuler des données avec LINQ&lt;/b&gt;&lt;/li&gt;

&lt;li&gt;Application Order Tracking - 2/4 - &lt;b&gt;Développer une interface utilisateur riche et testable avec WPF en utilisant des design patterns&lt;/b&gt;&lt;/li&gt;

&lt;li&gt;Application Order Tracking - 3/4 - &lt;b&gt;Persister ses objets avec Entity Framework et adapter l'interface utilisateur en conséquence&lt;/b&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;Application Order Tracking - 4/4 - &lt;b&gt;Développer une application Silverlight distribuée avec WCF&lt;/b&gt;&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;li&gt;Je présente également une session en solo : &lt;b&gt;Nouveautés des langages C# 3.0 et VB 9.0 (LINQ)&lt;/b&gt;&lt;br&gt;Il s'agit d'une reprise de la session d'&lt;a href="http://weblogs.asp.net/fmarguerie/archive/2008/01/14/techdays-france-2008-et-mes-sessions-sur-linq.aspx" mce_href="http://weblogs.asp.net/fmarguerie/archive/2008/01/14/techdays-france-2008-et-mes-sessions-sur-linq.aspx"&gt;Introduction à LINQ, C# 3.0 et VB 9.0&lt;/a&gt; que j'ai jouée avec Philippe Mougin durant les Microsoft TechDays France.&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
Frédéric présente une session en solo : &lt;b&gt;Développement piloté par les tests&lt;/b&gt;.&lt;br&gt;&lt;br&gt;Toutes les sessions sont &lt;a href="http://www.devteach.com/Session.aspx" mce_href="http://www.devteach.com/Session.aspx"&gt;détaillées sur le site de DevTeach&lt;/a&gt;.&lt;br&gt;
&lt;p&gt;Rendez-vous donc début décembre pour retrouver avec nous la fraîcheur de Montréal à cette époque et la chaleur de nos amis québécois !&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6641677" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Visual Studio Talk Show podcast about LINQ</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/09/15/visual-studio-talk-show-podcast-about-linq.aspx</link><pubDate>Mon, 15 Sep 2008 11:22:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6625732</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6625732</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2008/09/15/visual-studio-talk-show-podcast-about-linq.aspx#comments</comments><description>&lt;p&gt;In July, I was invited by &lt;a href="http://www.mariocardinal.com" mce_href="http://www.mariocardinal.com"&gt;Mario Cardinal&lt;/a&gt; and &lt;a href="http://guy.dotnet-expertise.com" mce_href="http://guy.dotnet-expertise.com"&gt;Guy Barrette&lt;/a&gt; to register a session for their &lt;a href="http://www.visualstudiotalkshow.com" mce_href="http://www.visualstudiotalkshow.com"&gt;Visual Studio Talk Show&lt;/a&gt; podcast. This session is now &lt;a href="http://www.visualstudiotalkshow.com/Archives/081-5septembre2008-Fabric.html" mce_href="http://www.visualstudiotalkshow.com/Archives/081-5septembre2008-Fabric.html"&gt;online&lt;/a&gt;. During one hour, Guy, Mario and I &lt;b&gt;discuss about LINQ in French&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;You can find the podcast &lt;a href="http://www.visualstudiotalkshow.com/Archives/081-5septembre2008-Fabric.html" mce_href="http://www.visualstudiotalkshow.com/Archives/081-5septembre2008-Fabric.html"&gt;here&lt;/a&gt;. I hope that you'll enjoy it and that it'll help you to learn more about LINQ's whats, whys and hows.&lt;br&gt;&lt;/p&gt;&lt;p&gt;I'd like to thank Mario and Guy for giving me this opportunity. It was a very good experience!&lt;br&gt;&lt;/p&gt;
&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6625732" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ im Einsatz, LINQ in Action in German (LINQ auf Deutsch)</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/08/28/linq-im-einsatz-linq-in-action-in-german.aspx</link><pubDate>Wed, 27 Aug 2008 22:59:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572608</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6572608</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2008/08/28/linq-im-einsatz-linq-in-action-in-german.aspx#comments</comments><description>&lt;img src="http://linqinaction.net/photos/main/images/3938/original.aspx" mce_src="http://linqinaction.net/photos/main/images/3938/original.aspx" style="margin-right: 10px;" width="120" align="left" height="152"&gt;
&lt;p&gt;Today, I received a copy of &lt;b&gt;LINQ im Einsatz&lt;/b&gt;. This is the German translation of &lt;a href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169" mce_href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169"&gt;LINQ in Action&lt;/a&gt;. It's now available from &lt;a href="http://www.amazon.de/LINQ-im-Einsatz-Fabrice-Marguerie/dp/3446414290/" mce_href="http://www.amazon.de/LINQ-im-Einsatz-Fabrice-Marguerie/dp/3446414290/"&gt;Amazon.de&lt;/a&gt; and from &lt;a href="http://www.hanser.de/buch.asp?isbn=978-3-446-41429-7" mce_href="http://www.hanser.de/buch.asp?isbn=978-3-446-41429-7"&gt;Hanser&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Bonus: The German version is bigger than the English one. It contains chapter 14, which covers LINQ to DataSet and is provided in English only as a PDF download from &lt;a href="http://www.manning.com/affiliate/idevaffiliate.php?id=252_74" mce_href="http://www.manning.com/affiliate/idevaffiliate.php?id=252_74"&gt;Manning's website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Maybe we'll see translations in other languages next. French would be a good idea, for example ;-)&lt;/p&gt;

&lt;p&gt;Viel Spaß beim Lesen!&lt;br&gt;&lt;/p&gt;

&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572608" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>What is the best book about C# 3.0 and LINQ?</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/06/18/what-is-the-best-book-about-csharp-3.0-and-linq.aspx</link><pubDate>Wed, 18 Jun 2008 21:59:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6292540</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/fmarguerie/rsscomments.aspx?PostID=6292540</wfw:commentRss><comments>http://weblogs.asp.net/fmarguerie/archive/2008/06/18/what-is-the-best-book-about-csharp-3.0-and-linq.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.eggheadcafe.com/tutorials/aspnet/b8d1776c-8c81-4160-b473-c819c6b18712/linq-in-action-marguerie.aspx" mce_href="http://www.eggheadcafe.com/tutorials/aspnet/b8d1776c-8c81-4160-b473-c819c6b18712/linq-in-action-marguerie.aspx"&gt;Eggheadcafe.com readers' poll&lt;/a&gt; declares &lt;a href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=1933988169" mce_href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=1933988169"&gt;LINQ in Action&lt;/a&gt; "The best book about C# 3.0 and LINQ".&lt;/p&gt;&lt;p&gt;The poll is still open, so feel free to give your opinion.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6292540" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category></item></channel></rss>