<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>LINQtoCRM Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/LINQtoCRM/Wiki/View.aspx?title=Home</link><description>LINQtoCRM Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/wikipage?version=77</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;UPDATE&lt;/b&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=82e632a7-faf9-41e0-8ec1-a2662aae9dfb&amp;amp;displaylang=en" class="externalLink"&gt;Version 4.0.12 of the Microsoft CRM SDK&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; includes a &lt;a href="http://msdn.microsoft.com/en-us/library/ff681573(v=MSDN.10).aspx" class="externalLink"&gt;Linq query provider for CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. I (friism) haven&amp;#39;t tested it, but you should probably give it a try before going with LINQtoCRM. Read the &lt;a href="http://friism.com/linqtocrm-obsoleted" class="externalLink"&gt;short announcement&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM/xRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt;&lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt;
&lt;h2&gt;Features&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;
&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;
&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;
&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;
&lt;li&gt;Orderby&lt;/li&gt;
&lt;li&gt;Skip/Take&lt;/li&gt;
&lt;li&gt;Count&lt;/li&gt;
&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;
&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Ressources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Querying%20CRM%20with%20Linq&amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Updating%20CRM%20entities%20with%20LinqtoCRM&amp;referringTitle=Home"&gt;Updating CRM entities with LinqtoCRM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Change%20log&amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Todo&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;A visual debugger/visualizer to show were you&amp;#39;ve been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;
&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Credits&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;
&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;
&lt;li&gt;Michael Friis (initial version, various updates,maintenance)&lt;/li&gt;
&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;
&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>friism</author><pubDate>Sun, 23 May 2010 08:11:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100523081113A</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/wikipage?version=76</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;UPDATE&lt;/b&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=82e632a7-faf9-41e0-8ec1-a2662aae9dfb&amp;amp;displaylang=en" class="externalLink"&gt;Version 4.0.12 of the Microsoft CRM SDK&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; includes a &lt;a href="http://msdn.microsoft.com/en-us/library/ff681573(v=MSDN.10).aspx" class="externalLink"&gt;Linq query provider for CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. I (friism) haven&amp;#39;t tested it, but you should probably give it a try before going with LINQtoCRM.&lt;br /&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM/xRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt;&lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt;
&lt;h2&gt;Features&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;
&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;
&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;
&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;
&lt;li&gt;Orderby&lt;/li&gt;
&lt;li&gt;Skip/Take&lt;/li&gt;
&lt;li&gt;Count&lt;/li&gt;
&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;
&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Ressources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Querying%20CRM%20with%20Linq&amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Updating%20CRM%20entities%20with%20LinqtoCRM&amp;referringTitle=Home"&gt;Updating CRM entities with LinqtoCRM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Change%20log&amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Todo&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;A visual debugger/visualizer to show were you&amp;#39;ve been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;
&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Credits&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;
&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;
&lt;li&gt;Michael Friis (initial version, various updates,maintenance)&lt;/li&gt;
&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;
&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>friism</author><pubDate>Sun, 23 May 2010 07:09:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100523070947A</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/wikipage?version=75</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Introduction&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM/xRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt;&lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt;
&lt;h2&gt;Features&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;
&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;
&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;
&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;
&lt;li&gt;Orderby&lt;/li&gt;
&lt;li&gt;Skip/Take&lt;/li&gt;
&lt;li&gt;Count&lt;/li&gt;
&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;
&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Ressources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Querying%20CRM%20with%20Linq&amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Updating%20CRM%20entities%20with%20LinqtoCRM&amp;referringTitle=Home"&gt;Updating CRM entities with LinqtoCRM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/wikipage?title=Change%20log&amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Todo&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;A visual debugger/visualizer to show were you've been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;
&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Credits&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;
&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;
&lt;li&gt;Michael Friis (initial version, various updates,maintenance)&lt;/li&gt;
&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;
&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>friism</author><pubDate>Sun, 01 Nov 2009 00:01:45 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20091101120145A</guid></item><item><title>New Comment on "Updating CRM entities with LinqtoCRM"</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating CRM entities with LinqtoCRM&amp;ANCHOR#C13292</link><description>&amp;#64;decarufe&amp;#58; It&amp;#39;s in th SDK http&amp;#58;&amp;#47;&amp;#47;msdn.microsoft.com&amp;#47;en-us&amp;#47;library&amp;#47;bb928994.aspx</description><author>friism</author><pubDate>Fri, 03 Jul 2009 09:46:17 GMT</pubDate><guid isPermaLink="false">New Comment on "Updating CRM entities with LinqtoCRM" 20090703094617A</guid></item><item><title>New Comment on "Updating CRM entities with LinqtoCRM"</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating CRM entities with LinqtoCRM&amp;ANCHOR#C13286</link><description>How can I create a new entity&amp;#63;&amp;#10;</description><author>decarufe</author><pubDate>Thu, 02 Jul 2009 18:36:01 GMT</pubDate><guid isPermaLink="false">New Comment on "Updating CRM entities with LinqtoCRM" 20090702063601P</guid></item><item><title>Updated Wiki: Querying CRM with Linq</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying CRM with Linq&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Querying CRM with Linq
&lt;/h2&gt; &lt;br /&gt;&lt;b&gt;Webcasts&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting Started&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships, including many-to-many&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Samples&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Setup:&lt;br /&gt;&lt;pre&gt;
    CrmService service = new CrmService();
    service.Url = &amp;quot;http://192.168.150.2:5555/mscrmservices/2007/crmservice.asmx&amp;quot;;
    service.Credentials = 
        new NetworkCredential(&amp;quot;administrator&amp;quot;, &amp;quot;pass@word1&amp;quot;, &amp;quot;litwareinc&amp;quot;);
    service.CrmAuthenticationTokenValue = token;
 
	ICrmService s = new CrmWebService(service);
	CrmQueryProvider p = new CrmQueryProvider(s);
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Retrieve CRM entity with all attributes:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                       select c;
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Retrieve anonymous type:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      select new { c.fullname };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Joins:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      join a in p.Linq&amp;lt;account&amp;gt;()
                      on c.parentcustomerid.Value equals a.accountid.Value
                      select new { c.firstname, a.name };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Many-to-many join:&lt;br /&gt;&lt;pre&gt;
	var res = from u in p.Linq&amp;lt;systemuser&amp;gt;()
			  join sr in p.Linq&amp;lt;systemuserroles&amp;gt;() 
			  on u.systemuserid.Value equals sr.systemuserid.Value
			  join r in p.Linq&amp;lt;role&amp;gt;() 
			  on sr.roleid.Value equals r.roleid.Value
			  select new { u.fullname, r.name };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Contains:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      where c.fullname.Contains(&amp;quot;John&amp;quot;)
                      select new { c.fullname };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Count:&lt;br /&gt;&lt;pre&gt;
            int res = (from c in p.Linq&amp;lt;contact&amp;gt;()
                       select c.contactid).Count();
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Chained queries and paging. This query retrieves the first 100 contacts in batches of 10:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      select new { c.fullname };
                       
            for (int i = 0; i &amp;lt; 10; i++)
            {
                var res2 = res.Skip(i*10).Take(10);
                foreach (var v in res2)
                    WriteLine(v.fullname);
            }
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Distinct&lt;br /&gt;&lt;pre&gt;
            var res = (from c in p.Linq&amp;lt;contact&amp;gt;()
                      orderby c.firstname
                      select new {  c.firstname}
                      ).Distinct();
 
&lt;/pre&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Tue, 31 Mar 2009 19:27:58 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Querying CRM with Linq 20090331072758P</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=74</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Introduction
&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt; &lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;&lt;li&gt;Orderby&lt;/li&gt;&lt;li&gt;Skip/Take&lt;/li&gt;&lt;li&gt;Count&lt;/li&gt;&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Ressources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying%20CRM%20with%20Linq&amp;amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating%20CRM%20entities%20with%20LinqtoCRM&amp;amp;referringTitle=Home"&gt;Updating CRM entities with LinqtoCRM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change%20log&amp;amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Todo
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A visual debugger/visualizer to show were you've been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Credits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;&lt;li&gt;Michael Friis (initial version, various updates,maintenance)&lt;/li&gt;&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Mon, 16 Mar 2009 10:43:35 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090316104335A</guid></item><item><title>Updated Wiki: Change log</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change log&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Change log
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;7-03-2009: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24377"&gt;0.3.3 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bugfixes&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;16-01-2009: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21862"&gt;0.3.2 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bugfix&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;8-12-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20304"&gt;0.3.1 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bugfix&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;6-12-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20230"&gt;0.3.0 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Significant query generator rewrite by Petteri R&amp;#228;ty, many bugs squashed&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating ManyToMany classes added by Michael Friis&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;22-8-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=16542"&gt;0.2.7 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes by Mel Gerats&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;3-6-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=13994"&gt;0.2.6 Beta&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Support for Distinct&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;25-5-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=13737"&gt;0.2.5 Beta&lt;/a&gt; released. All new features are by Mel Gerats.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Unit tests&lt;/li&gt;&lt;li&gt;Support for paging using Skip/Take&lt;/li&gt;&lt;li&gt;Support for Contains, StartsWith and EndsWith&lt;/li&gt;&lt;li&gt;Support for Count&lt;/li&gt;&lt;li&gt;Support for chained queries&lt;/li&gt;&lt;li&gt;Support for selecting crm entities&lt;/li&gt;&lt;li&gt;Decoupling of LinqtoCRM and web service. LinqtoCRM can be compiled to a .dll and added to project&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;13-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=10210"&gt;0.2.4 Beta&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;&lt;li&gt;Unit test project (although no tests implemented)&lt;/li&gt;&lt;li&gt;The project is fairly usable and is now in beta&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;13-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9869"&gt;0.2.3 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;&lt;li&gt;Now compiles out of the box -- just change web reference and you're golden.&lt;/li&gt;&lt;li&gt;Minimal download with the files you need for your project&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.itu.dk/~friism/blog/?p=37" class="externalLink"&gt;Demo video&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;07-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9683"&gt;0.2.2 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Lots of smaller bug-fixes&lt;/li&gt;&lt;li&gt;Changed from WCF to old-school service reference&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;26-12-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9433"&gt;0.2.1 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;First new release in a while, sorry 'bout that!&lt;/li&gt;&lt;li&gt;Has been compiled with VS 2008 RTM and runs against CRM 4.0 RC0 (latest VPC)&lt;/li&gt;&lt;li&gt;Updates to result-processing code from &lt;a href="http://stunnware.com/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;06-08-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6263"&gt;0.2.0 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Based on insights from Matt Warren's series of &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;articles&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Uses Visitor-pattern for query-generation&lt;/li&gt;&lt;li&gt;Ordering implemented&lt;/li&gt;&lt;li&gt;Ported to IQeryProvider/IQeryable-model&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;01-08-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6187"&gt;0.1.1 Alpha&lt;/a&gt; released. &lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Compiles and runs (in it's own fashion) under VS 2008 Beta 2&lt;/li&gt;&lt;li&gt;FetchXML-library included as DLL in release (with thanks to Michael H&amp;#246;hne)&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;30-07-2007 : CodePlex site created, initial code uploaded (very crude early alpha - &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6153"&gt;0.1.0 Alpha&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 20:08:56 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Change log 20090307080856P</guid></item><item><title>Updated Wiki: Updating CRM entities with LinqtoCRM</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating CRM entities with LinqtoCRM&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Updating CRM entities with LinqtoCRM
&lt;/h2&gt; &lt;br /&gt;If you want to update entities queried with LinqtoCRM, you can't just retrieve entities with all attributes, change something and then update through the web service (a friend of mine worked out why this is so, but I've forgotten). Instead, you need to new up your own entitites and assign the relevant id (which is what CRM uses to determine which entity you're trying to change):&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
	var res = from c in p.Linq&amp;lt;contact&amp;gt;()
			  where c.fullname.StartsWith(&amp;quot;Zwie&amp;quot;)
                          // this is the important part
			  select new contact() { contactid = c.contactid };
 
	foreach (var con in res)
	{
		con.address1_line1 = &amp;quot;foo&amp;quot;;
		service.Update(con);
		Console.WriteLine(&amp;quot;updated &amp;quot; + con.contactid.Value);
	}
&lt;/pre&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 18:42:26 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Updating CRM entities with LinqtoCRM 20090307064226P</guid></item><item><title>Updated Wiki: Updating CRM entities with LinqtoCRM</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating CRM entities with LinqtoCRM&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Updating CRM entities with LinqtoCRM
&lt;/h2&gt; &lt;br /&gt;If you want to update entities queried with LinqtoCRM, you can't just retrieve entities with all attributes, change something and then update through the web service (a friend of mine worked out why this is so, but I've forgotten). Instead, you need to new up your own entitites and assign the relevant id (which is what CRM uses to determine which entity you're trying to change):&lt;br /&gt;&lt;pre&gt;
 
	var res = from c in p.Linq&amp;lt;contact&amp;gt;()
			  where c.fullname.StartsWith(&amp;quot;Zwie&amp;quot;)
                          // this is the important part
			  select new contact() { contactid = c.contactid };
 
	foreach (var con in res)
	{
		con.address1_line1 = &amp;quot;foo&amp;quot;;
		service.Update(con);
		Console.WriteLine(&amp;quot;updated &amp;quot; + con.contactid.Value);
	}
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 18:41:56 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Updating CRM entities with LinqtoCRM 20090307064156P</guid></item><item><title>Updated Wiki: Updating CRM entities with LinqtoCRM</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating CRM entities with LinqtoCRM&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Updating CRM entities with LinqtoCRM
&lt;/h2&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 18:23:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Updating CRM entities with LinqtoCRM 20090307062340P</guid></item><item><title>Updated Wiki: Updating CRM entities with LinqtoCRM</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating CRM entities with LinqtoCRM&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
!!Updating CRM entities with LinqtoCRM&lt;br /&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 18:23:21 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Updating CRM entities with LinqtoCRM 20090307062321P</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=73</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Introduction
&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt; &lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;&lt;li&gt;Orderby&lt;/li&gt;&lt;li&gt;Skip/Take&lt;/li&gt;&lt;li&gt;Count&lt;/li&gt;&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Ressources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying%20CRM%20with%20Linq&amp;amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating%20CRM%20entities%20with%20LinqtoCRM&amp;amp;referringTitle=Home"&gt;Updating CRM entities with LinqtoCRM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change%20log&amp;amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Todo
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A visual debugger/visualizer to show were you've been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Credits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 18:22:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090307062253P</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=72</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Introduction
&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt; &lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;&lt;li&gt;Orderby&lt;/li&gt;&lt;li&gt;Skip/Take&lt;/li&gt;&lt;li&gt;Count&lt;/li&gt;&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Ressources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying%20CRM%20with%20Linq&amp;amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Updating%20entities%20with%20LinqtoCRM&amp;amp;referringTitle=Home"&gt;Updating entities with LinqtoCRM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change%20log&amp;amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Todo
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A visual debugger/visualizer to show were you've been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Credits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 16:53:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090307045320P</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=71</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Introduction
&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt; &lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;&lt;li&gt;Orderby&lt;/li&gt;&lt;li&gt;Skip/Take&lt;/li&gt;&lt;li&gt;Count&lt;/li&gt;&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Ressources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying%20CRM%20with%20Linq&amp;amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change%20log&amp;amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Todo
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A visual debugger/visualizer to show were you've been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Credits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 13:44:36 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090307014436P</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=70</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Introduction
&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt; &lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;&lt;li&gt;Orderby&lt;/li&gt;&lt;li&gt;Skip/Take&lt;/li&gt;&lt;li&gt;Count&lt;/li&gt;&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Ressources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying%20CRM%20with%20Linq&amp;amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="Getting%20started%20webcasthttp://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcasthttp://friism.com/linqtocrm-030-released&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change%20log&amp;amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Todo
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A visual debugger/visualizer to show were you've been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Credits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 13:44:09 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090307014409P</guid></item><item><title>Updated Wiki: Change log</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change log&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Change log
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;16-01-2009: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21862"&gt;0.3.2 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bugfix&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;8-12-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20304"&gt;0.3.1 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bugfix&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;6-12-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20230"&gt;0.3.0 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Significant query generator rewrite by Petteri R&amp;#228;ty, many bugs squashed&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating ManyToMany classes added by Michael Friis&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;22-8-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=16542"&gt;0.2.7 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes by Mel Gerats&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;3-6-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=13994"&gt;0.2.6 Beta&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Support for Distinct&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;25-5-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=13737"&gt;0.2.5 Beta&lt;/a&gt; released. All new features are by Mel Gerats.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Unit tests&lt;/li&gt;&lt;li&gt;Support for paging using Skip/Take&lt;/li&gt;&lt;li&gt;Support for Contains, StartsWith and EndsWith&lt;/li&gt;&lt;li&gt;Support for Count&lt;/li&gt;&lt;li&gt;Support for chained queries&lt;/li&gt;&lt;li&gt;Support for selecting crm entities&lt;/li&gt;&lt;li&gt;Decoupling of LinqtoCRM and web service. LinqtoCRM can be compiled to a .dll and added to project&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;13-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=10210"&gt;0.2.4 Beta&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;&lt;li&gt;Unit test project (although no tests implemented)&lt;/li&gt;&lt;li&gt;The project is fairly usable and is now in beta&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;13-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9869"&gt;0.2.3 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;&lt;li&gt;Now compiles out of the box -- just change web reference and you're golden.&lt;/li&gt;&lt;li&gt;Minimal download with the files you need for your project&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.itu.dk/~friism/blog/?p=37" class="externalLink"&gt;Demo video&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;07-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9683"&gt;0.2.2 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Lots of smaller bug-fixes&lt;/li&gt;&lt;li&gt;Changed from WCF to old-school service reference&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;26-12-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9433"&gt;0.2.1 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;First new release in a while, sorry 'bout that!&lt;/li&gt;&lt;li&gt;Has been compiled with VS 2008 RTM and runs against CRM 4.0 RC0 (latest VPC)&lt;/li&gt;&lt;li&gt;Updates to result-processing code from &lt;a href="http://stunnware.com/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;06-08-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6263"&gt;0.2.0 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Based on insights from Matt Warren's series of &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;articles&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Uses Visitor-pattern for query-generation&lt;/li&gt;&lt;li&gt;Ordering implemented&lt;/li&gt;&lt;li&gt;Ported to IQeryProvider/IQeryable-model&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;01-08-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6187"&gt;0.1.1 Alpha&lt;/a&gt; released. &lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Compiles and runs (in it's own fashion) under VS 2008 Beta 2&lt;/li&gt;&lt;li&gt;FetchXML-library included as DLL in release (with thanks to Michael H&amp;#246;hne)&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;30-07-2007 : CodePlex site created, initial code uploaded (very crude early alpha - &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6153"&gt;0.1.0 Alpha&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 13:43:36 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Change log 20090307014336P</guid></item><item><title>Updated Wiki: Change log</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change log&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Status
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;16-01-2009: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21862"&gt;0.3.2 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bugfix&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;8-12-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20304"&gt;0.3.1 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bugfix&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;6-12-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20230"&gt;0.3.0 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Significant query generator rewrite by Petteri R&amp;#228;ty, many bugs squashed&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating ManyToMany classes added by Michael Friis&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;22-8-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=16542"&gt;0.2.7 Beta&lt;/a&gt; released&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes by Mel Gerats&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;3-6-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=13994"&gt;0.2.6 Beta&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Support for Distinct&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;25-5-2008: &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=13737"&gt;0.2.5 Beta&lt;/a&gt; released. All new features are by Mel Gerats.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Unit tests&lt;/li&gt;&lt;li&gt;Support for paging using Skip/Take&lt;/li&gt;&lt;li&gt;Support for Contains, StartsWith and EndsWith&lt;/li&gt;&lt;li&gt;Support for Count&lt;/li&gt;&lt;li&gt;Support for chained queries&lt;/li&gt;&lt;li&gt;Support for selecting crm entities&lt;/li&gt;&lt;li&gt;Decoupling of LinqtoCRM and web service. LinqtoCRM can be compiled to a .dll and added to project&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;13-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=10210"&gt;0.2.4 Beta&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;&lt;li&gt;Unit test project (although no tests implemented)&lt;/li&gt;&lt;li&gt;The project is fairly usable and is now in beta&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;13-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9869"&gt;0.2.3 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;&lt;li&gt;Now compiles out of the box -- just change web reference and you're golden.&lt;/li&gt;&lt;li&gt;Minimal download with the files you need for your project&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.itu.dk/~friism/blog/?p=37" class="externalLink"&gt;Demo video&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;07-1-2008 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9683"&gt;0.2.2 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Lots of smaller bug-fixes&lt;/li&gt;&lt;li&gt;Changed from WCF to old-school service reference&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;26-12-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9433"&gt;0.2.1 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;First new release in a while, sorry 'bout that!&lt;/li&gt;&lt;li&gt;Has been compiled with VS 2008 RTM and runs against CRM 4.0 RC0 (latest VPC)&lt;/li&gt;&lt;li&gt;Updates to result-processing code from &lt;a href="http://stunnware.com/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;06-08-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6263"&gt;0.2.0 Alpha&lt;/a&gt; released.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Based on insights from Matt Warren's series of &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;articles&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Uses Visitor-pattern for query-generation&lt;/li&gt;&lt;li&gt;Ordering implemented&lt;/li&gt;&lt;li&gt;Ported to IQeryProvider/IQeryable-model&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;01-08-2007 : &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6187"&gt;0.1.1 Alpha&lt;/a&gt; released. &lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Compiles and runs (in it's own fashion) under VS 2008 Beta 2&lt;/li&gt;&lt;li&gt;FetchXML-library included as DLL in release (with thanks to Michael H&amp;#246;hne)&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;30-07-2007 : CodePlex site created, initial code uploaded (very crude early alpha - &lt;a href="http://linqtocrm.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6153"&gt;0.1.0 Alpha&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 13:43:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Change log 20090307014320P</guid></item><item><title>Updated Wiki: Home</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=69</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Introduction
&lt;/h2&gt;The Linq to CRM project provides a custom query provider for &lt;a href="http://www.microsoft.com/dynamics/crm/" class="externalLink"&gt;Microsoft Dynamics CRM&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (mscrm).&lt;br /&gt; &lt;br /&gt;Found a query you think should work, but LinqtoCRM breaks or returns the wrong data? Please create a work-item or send it to me at friism+linqtocrm@gmail.com.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Where-clauses of some complexity (And/Or, greater/less-than etc.)&lt;/li&gt;&lt;li&gt;Joins through relationtionships, including many-to-many ones&lt;/li&gt;&lt;li&gt;Translation of queries to FetchXML&lt;/li&gt;&lt;li&gt;Parsing of result to anonymous types or CRM entities&lt;/li&gt;&lt;li&gt;Orderby&lt;/li&gt;&lt;li&gt;Skip/Take&lt;/li&gt;&lt;li&gt;Count&lt;/li&gt;&lt;li&gt;Contains, StartsWith, EndsWith&lt;/li&gt;&lt;li&gt;CRMMetal tool for generating many-to-many relationship classes&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Ressources
&lt;/h2&gt;*&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying%20CRM%20with%20Linq&amp;amp;referringTitle=Home"&gt;Querying CRM with Linq&lt;/a&gt;&lt;br /&gt;*&lt;a href="Getting%20started%20webcasthttp://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting started webcasthttp://friism.com/linqtocrm-030-released&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;*&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships webcast&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;*&lt;a href="http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Change%20log&amp;amp;referringTitle=Home"&gt;Change log&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Todo
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A visual debugger/visualizer to show were you've been too ambitious with your query. Bart De Smet seems to have the right &lt;a href="http://community.bartdesmet.net/blogs/linqtosharepoint/archive/2007/07/05/linq-to-sharepoint-improving-the-parser-debugger-visualizer-fun.aspx" class="externalLink"&gt;idea&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A &amp;quot;pedal-to-the-metal&amp;quot; toggle. If the code will be running with acess to the SQL-server, the developer can specify that the query should be translated to SQL and run on the filtered views at the flick of a switch.&lt;/li&gt;&lt;li&gt;The CRM web service is tangled up in the queryprovider code. It would be desirable if it could be moved outside and accessed though an interface. The code is rather dependent on the types exposed by the web service proxy-classes and it is not clear how this dependency could be removed without implementing something along the lines of SQLMetal/SPMetal.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Credits
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Mel Gerats (implemented paging, contains and loads of other stuff)&lt;/li&gt;&lt;li&gt;Petteri R&amp;#228;ty (rewrote query generation code, improved support for projections and conditions)&lt;/li&gt;&lt;li&gt;Bart De Smet for the inspirational &lt;a href="http://www.codeplex.com/LINQtoSharePoint" class="externalLink"&gt;LINQtoSharePoint&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; implementation&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stunnware.com/crm/" class="externalLink"&gt;Michael H&amp;#246;hne&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for his FetchXML library&lt;/li&gt;&lt;li&gt;Matt Warren for his articles on QueryProvider-building: &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx" class="externalLink"&gt;http://blogs.msdn.com/mattwar/archive/2007/08/03/linq-building-an-iqueryable-provider-part-v.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 13:42:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090307014255P</guid></item><item><title>Updated Wiki: Querying CRM with Linq</title><link>http://linqtocrm.codeplex.com/Wiki/View.aspx?title=Querying CRM with Linq&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Querying CRM with Linq
&lt;/h2&gt; &lt;br /&gt;&lt;b&gt;Webcasts&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://friism.com/linqtocrm-030-released" class="externalLink"&gt;Getting Started&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://friism.com/querying-relationships-with-linqtocrm" class="externalLink"&gt;Querying relationships, including many-to-many&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Samples&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Setup:&lt;br /&gt;&lt;pre&gt;
    CrmService service = new CrmService();
    service.Url = &amp;quot;http://192.168.150.2:5555/mscrmservices/2007/crmservice.asmx&amp;quot;;
    service.Credentials = 
        new NetworkCredential(&amp;quot;administrator&amp;quot;, &amp;quot;pass@word1&amp;quot;, &amp;quot;litwareinc&amp;quot;);
    service.CrmAuthenticationTokenValue = token;
 
	ICrmService s = new CrmWebService(service);
	CrmQueryProvider p = new CrmQueryProvider(s);
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Retrieve CRM entity with all attributes:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                       select c;
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Retrieve anonymous type:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      select new { c.fullname };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Joins:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      join a in p.Linq&amp;lt;account&amp;gt;()
                      on c.parentcustomerid.Value equals a.accountid.Value
                      select new { c.firstname, a.name };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Many-to-many join:&lt;br /&gt;&lt;pre&gt;
	var res = from u in p.Linq&amp;lt;systemuser&amp;gt;()
			  join sr in p.Linq&amp;lt;systemuserroles&amp;gt;() 
			  on u.systemuserid.Value equals sr.systemuserid.Value
			  join r in p.Linq&amp;lt;role&amp;gt;() 
			  on sr.roleid.Value equals r.roleid.Value
			  select new { u.fullname, r.name };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Contains:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      where c.fullname.Contains(&amp;quot;John&amp;quot;)
                      select new { c.fullname };
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Count:&lt;br /&gt;&lt;pre&gt;
            int res = (from c in p.Linq&amp;lt;contact&amp;gt;()
                       select c).Count();
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Chained queries and paging. This query retrieves the first 100 contacts in batches of 10:&lt;br /&gt;&lt;pre&gt;
            var res = from c in p.Linq&amp;lt;contact&amp;gt;()
                      select new { c.fullname };
                       
            for (int i = 0; i &amp;lt; 10; i++)
            {
                var res2 = res.Skip(i*10).Take(10);
                foreach (var v in res2)
                    WriteLine(v.fullname);
            }
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;Distinct&lt;br /&gt;&lt;pre&gt;
            var res = (from c in p.Linq&amp;lt;contact&amp;gt;()
                      orderby c.firstname
                      select new {  c.firstname}
                      ).Distinct();
 
&lt;/pre&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>friism</author><pubDate>Sat, 07 Mar 2009 13:32:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Querying CRM with Linq 20090307013213P</guid></item></channel></rss>