<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.richardramdat.com &#187; SharePoint</title>
	<atom:link href="http://blog.richardramdat.com/category/sharepoint/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.richardramdat.com</link>
	<description></description>
	<lastBuildDate>Tue, 17 Jan 2012 01:49:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SharePoint 2010 Licensing &#8211; Standard, Enterprise, FAST Search</title>
		<link>http://blog.richardramdat.com/2011/03/sharepoint-2010-licensing-standard-enterprise-fast-search/</link>
		<comments>http://blog.richardramdat.com/2011/03/sharepoint-2010-licensing-standard-enterprise-fast-search/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 21:56:06 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=269</guid>
		<description><![CDATA[It&#8217;s not always clear how licensing works with Microsoft, even when you visit the product page and compare editions for SharePoint 2010 you&#8217;re still left with scratching your head. To help, here&#8217;s a bullet list of things to keep in mind -

SharePoint 2010 Foundation (previously known as WSS 3.0) comes included with Windows 2008 Server [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not always clear how licensing works with Microsoft, even when you visit the product page and compare editions for SharePoint 2010 you&#8217;re still left with scratching your head. To help, here&#8217;s a bullet list of things to keep in mind -</p>
<ul>
<li><strong>SharePoint 2010 Foundation</strong> (previously known as WSS 3.0) comes included with Windows 2008 Server Standard edition. You need Windows Server CALs for user access.</li>
<li><strong>SharePoint 2010 Server</strong> is a server product that you install on-top of Windows 2008 Server and is licensed separately per server. You may see &#8220;Standard&#8221; or &#8220;Enterprise&#8221; but the server product comes in only one version and has only one SKU.</li>
<li><strong>Standard &amp; Enterprise CALs</strong> (client access licenses). Each user connecting to a SharePoint server needs a standard CAL. For users accessing enterprise features, they also need an enterprise CAL. Note &#8211; its not one or the other, but both (Standard with Enterprise CALs) if you decide to use  any of the enterprise features.</li>
<li><strong>Summary of Enterprise CAL feature</strong>s -
<ul>
<li>FAST Search Centers
<ul>
<li>Sorting by any managed property</li>
<li>Contextual search results (i.e. user or audience targeted)</li>
<li>Refinement filter counts</li>
<li>Similar results</li>
<li>Thumbnails and previews</li>
<li>Visual best bets</li>
<li>Scale and other search platform enhancements</li>
</ul>
</li>
<li>Business Intelligence
<ul>
<li>KPI’s</li>
<li>Chart Web Parts</li>
<li>Dashboards</li>
<li>Data Connection Library</li>
<li>PowerPivot for SharePoint</li>
</ul>
</li>
<li>Access Services</li>
<li>Excel Services</li>
<li>InfoPath Services</li>
<li>Visio Services</li>
<li>PerformancePoint Services</li>
</ul>
</li>
<li><strong>Microsoft FAST Search Server for SharePoint &#8211; </strong>if using FAST Search Centers as part of the Enterprise CAL, you need a separate server license for each FAST server that will actually index and crawl content. Vice versa, if you want to implement Microsoft FAST Search &#8211; you need Enterprise CALs to access the search centers within SharePoint 2010.</li>
</ul>
<p>Note, the above covers mostly intranet/extranet scenarios. Microsoft have specific versions of SharePoint 2010 for Internet sites that may also require Window External Connector licenses for your Windows 2008 servers, these versions also have Standard and Enterprise features and can be used with Microsoft FAST Search.</p>
<p>In addition to the above, the following links are also great resources for understanding SharePoint 2010 licensing</p>
<ul>
<li><a href="http://www.sharepointconfig.com/2010/05/indicative-sharepoint-2010-licencing-costs/">http://www.sharepointconfig.com/2010/05/indicative-sharepoint-2010-licencing-costs/</a></li>
<li><a href="http://community.bamboosolutions.com/blogs/sharepoint-2010-price-calculator/default.aspx">http://community.bamboosolutions.com/blogs/sharepoint-2010-price-calculator/default.aspx</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2011/03/sharepoint-2010-licensing-standard-enterprise-fast-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extract WSP from SharePoint MOSS Solution Store</title>
		<link>http://blog.richardramdat.com/2010/10/extract-wsp-from-sharepoint-moss-solution-store/</link>
		<comments>http://blog.richardramdat.com/2010/10/extract-wsp-from-sharepoint-moss-solution-store/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 20:42:44 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=214</guid>
		<description><![CDATA[Need to deploy a WSP to a new SharePoint 2007 server but don&#8217;t have an archive of it? The following utility allows you to extract a specific or all WSPs packages installed on a SharePoint farm and save them to disk where you can redeploy it to another server. Very useful -
http://code.msdn.microsoft.com/SPSolutionExtractor
Be wary though &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Need to deploy a WSP to a new SharePoint 2007 server but don&#8217;t have an archive of it? The following utility allows you to extract a specific or all WSPs packages installed on a SharePoint farm and save them to disk where you can redeploy it to another server. Very useful -</p>
<p><a href="http://code.msdn.microsoft.com/SPSolutionExtractor">http://code.msdn.microsoft.com/SPSolutionExtractor</a></p>
<p>Be wary though &#8211; the author of this tool doesn&#8217;t seem familar with command line tools.  Not only is the executable&#8217;s name far too wordy, certain menus and prompts seem to lack polish, however it does get the job done.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/10/extract-wsp-from-sharepoint-moss-solution-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Global Assembly Cache (GAC) Compare</title>
		<link>http://blog.richardramdat.com/2010/06/global-assembly-cache-gac-compare/</link>
		<comments>http://blog.richardramdat.com/2010/06/global-assembly-cache-gac-compare/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 15:16:41 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=209</guid>
		<description><![CDATA[If you&#8217;re doing SharePoint development then you&#8217;ve no doubt heard of the GAC, or Global Assembly Cache (c:\windows\assembly) where compiled assemblies are deployed. In a SharePoint farm with several front-ends, you may occasionally find a server with a missing DLL or the wrong version of the assembly.
The following tool makes quick work of trying to [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re doing SharePoint development then you&#8217;ve no doubt heard of the GAC, or Global Assembly Cache (c:\windows\assembly) where compiled assemblies are deployed. In a SharePoint farm with several front-ends, you may occasionally find a server with a missing DLL or the wrong version of the assembly.</p>
<p>The following tool makes quick work of trying to find differences in the GAC for remote servers and evens offers up a nifty HTML report. Very nicely done.</p>
<p><a href="http://gaccompare.codeplex.com/">http://gaccompare.codeplex.com/</a></p>
<p>A couple things &#8211; you need to have Admin rights on the remote computers, the tool does take a while to do the compare (so be patient) and to get the HTML report and other cool features, right-click in the results pane after it has loaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/06/global-assembly-cache-gac-compare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Error Delete Site WebDeleted.aspx File Not Found</title>
		<link>http://blog.richardramdat.com/2010/01/sharepoint-error-delete-site-webdeleted-aspx-file-not-found/</link>
		<comments>http://blog.richardramdat.com/2010/01/sharepoint-error-delete-site-webdeleted-aspx-file-not-found/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 21:21:00 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=196</guid>
		<description><![CDATA[We had several  users reporting an error when deleting a SharePoint team site. The error appears as a &#8220;File Not Found.&#8221; on the WebDeleted.aspx layout page along with a stack trace. It appears that the problem stems from our custom master page. For our implementation we use a custom HttpModule that redirects incoming requests for [...]]]></description>
			<content:encoded><![CDATA[<p>We had several  users reporting an error when deleting a SharePoint team site. The error appears as a &#8220;File Not Found.&#8221; on the WebDeleted.aspx layout page along with a stack trace. It appears that the problem stems from our custom master page. For our implementation we use a custom HttpModule that redirects incoming requests for a master page to virtualized custom master pages that we maintain.</p>
<p>The WebDeleted.aspx page references the simple.master page which we redirect to our customized application master page. Apparently this results in the page trying to load in elements that are out of context for it. The solution was to stop redirecting simple.master and instead route it back to the SharePoint out of the box simple.master.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/01/sharepoint-error-delete-site-webdeleted-aspx-file-not-found/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SharePoint CAML Query Date</title>
		<link>http://blog.richardramdat.com/2010/01/sharepoint-caml-query-date/</link>
		<comments>http://blog.richardramdat.com/2010/01/sharepoint-caml-query-date/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 20:13:32 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=193</guid>
		<description><![CDATA[For the past two SharePoint implementations that I&#8217;ve worked with, it was a common business requirement to query from a list to retrieve items that should be displayed on a &#8220;scheduled&#8221; basis. Think along the lines of an alert or announcement. Typically what I end doing is create a custom list and add the following [...]]]></description>
			<content:encoded><![CDATA[<p>For the past two SharePoint implementations that I&#8217;ve worked with, it was a common business requirement to query from a list to retrieve items that should be displayed on a &#8220;scheduled&#8221; basis. Think along the lines of an alert or announcement. Typically what I end doing is create a custom list and add the following three fields, &#8220;StartTime&#8221;, &#8220;EndTime&#8221; and &#8220;Active&#8221;. Start and End Time are the fields for scheduling the list item. I make them a Date+Time field and also allow them to be optionally be null, this way someone can create an open ended item that starts at a specific time but has no specified End Time. The Active field is a simple yes/no that is a convenient kill-switch or safety check.</p>
<p>So with the three columns, the following CAML query can be used to query items that should be currently displayed:</p>
<textarea cols="40" rows="10" name="code" class="Xml">        <Where>
          <And>
            <And>
              <Or>
                <Leq>
                  <FieldRef Name='StartTime' />
                  <Value Type='DateTime' IncludeTimeValue='True'>
                    <Today />
                  </Value>
                </Leq>
                <IsNull>
                  <FieldRef Name='StartTime' />
                </IsNull>
              </Or>
              <Or>
                <Gt>
                  <FieldRef Name='EndTime' />
                  <Value Type='DateTime' IncludeTimeValue='True'>
                    <Today />
                  </Value>
                </Gt>
                <IsNull>
                  <FieldRef Name='EndTime' />
                </IsNull>
              </Or>
            </And>
            <Eq>
              <FieldRef Name='Active' />
              <Value Type='Boolean'>1</Value>
            </Eq>
          </And>
        </Where>
        <OrderBy>
          <FieldRef Name='Modified' Ascending='False' />
        </OrderBy></textarea>
	<!-- Wordpress Code Snippet -->
	<script type="text/javascript" src="http://blog.richardramdat.com/wp-content/plugins/wordpress-code-snippet/js/shCore.js"></script><script type="text/javascript" src="http://blog.richardramdat.com/wp-content/plugins/wordpress-code-snippet/js/shBrushXml.js"></script>
	<link type="text/css" rel="stylesheet" href="http://blog.richardramdat.com/wp-content/plugins/wordpress-code-snippet/css/SyntaxHighlighter.css"/>
	
	<script language="javascript">
	dp.SyntaxHighlighter.ClipboardSwf = 'http://blog.richardramdat.com/wp-content/plugins/wordpress-code-snippet/js/clipboard.swf';
	dp.SyntaxHighlighter.HighlightAll('code');
	</script>
	<!-- End Wordpress Code Snippet -->
	]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/01/sharepoint-caml-query-date/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Determine if SPListItem belongs to a document library</title>
		<link>http://blog.richardramdat.com/2010/01/determine-if-splistitem-belongs-to-a-document-library/</link>
		<comments>http://blog.richardramdat.com/2010/01/determine-if-splistitem-belongs-to-a-document-library/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 05:07:48 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=187</guid>
		<description><![CDATA[So you have an instance of a SPListItem and want to know whether this item belongs to a Document Library or if it came from a list (such as an Event Calender, Survey, or Custom List). A quick way to distinguish a document library item is to access the ParentList property of the SPListItem class and examine [...]]]></description>
			<content:encoded><![CDATA[<p>So you have an instance of a SPListItem and want to know whether this item belongs to a Document Library or if it came from a list (such as an Event Calender, Survey, or Custom List). A quick way to distinguish a document library item is to access the ParentList property of the SPListItem class and examine the BaseType. In code,</p>
<p>SPListItem item = GetItemFromSomeWhere();</p>
<p>if (item.ParentList.BaseType == SPBaseType.DocumentLibrary)</p>
<p>{</p>
<p>// This item is from a document library &#8211; it probably contains a file.</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/01/determine-if-splistitem-belongs-to-a-document-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Custom Datasheet Mode &#8211; IE Crash</title>
		<link>http://blog.richardramdat.com/2009/10/sharepoint-custom-datasheet-mode-ie-crash/</link>
		<comments>http://blog.richardramdat.com/2009/10/sharepoint-custom-datasheet-mode-ie-crash/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 16:18:47 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=179</guid>
		<description><![CDATA[There is a known SharePoint customization bug that under certain circumstances, modifications to a master page (ie, use of a doctype or margin/padding) will cause the &#8220;Edit in Datasheet&#8221; mode to crash Internet Explorer.
The underlying problem is caused by a poorly written function called GCComputeSizing within Core.js The common fix is to override this function [...]]]></description>
			<content:encoded><![CDATA[<p>There is a known SharePoint customization bug that under certain circumstances, modifications to a master page (ie, use of a doctype or margin/padding) will cause the &#8220;Edit in Datasheet&#8221; mode to crash Internet Explorer.</p>
<p>The underlying problem is caused by a poorly written function called GCComputeSizing within Core.js The common fix is to override this function by defining your own function called GCComputeSizing in a script reference that is loaded in after the reference to Core.js is called in your master page.</p>
<p>However, what most of the other blogs and resources fail to mention is that Core,js can sometimes be loaded in using the &#8220;defer&#8221; attribute of the script tag. When this happens, core.js will now be loaded in after the page is loaded. Unless you also defer your override script, you will invoke the built-in GCComputeSizing function and the bug will persist.</p>
<p>This problem was specifically noticed when using user-defined or custom datasheet views. Comparing the source html for standard and custom datasheet view yieled the following:</p>
<p>Standard Datasheet View:<br />
&lt;script type=&#8221;text/javascript&#8221; language=&#8221;javascript&#8221; src=&#8221;/_layouts/1033/core.js&#8221;&gt;&lt;/script&gt;</p>
<p>Custom Datasheet View:<br />
&lt;script type=&#8221;text/javascript&#8221; language=&#8221;javascript&#8221; src=&#8221;/_layouts/1033/core.js&#8221; defer&gt;&lt;/script&gt;</p>
<p>As you can see, only custom datasheet views were loading in core.js  as a deferred script. Adding the defer attribute to our custom override script fixed this problem by deferring the override after the deferred core.js was loaded.</p>
<p>In terms of overriding GCComputeSizing  there are many examples easily searchable through the interwebs. One word of caution though, as a person who has quite a bit of experience with Javascript, GCComputeSizing not a function suitable for production. Even some of the *corrected* versions that others have posted still make me uneasy. Anything that has the potential of throwing a client&#8217;s browser into an infinite loop and locking up their cpu is a serious  cause for concern. Fortunately, our customized design uses a fixed layout so I was able to simplify GCComputeSizing to the following:</p>
<p>function GCComputeSizing(GCObject)<br />
{<br />
    if (TestGCObject(GCObject))<br />
    {<br />
      var lGCWindowWidth=663;<br />
      var lGCWindowHeight=550;</p>
<p>      glGCObjectWidth = lGCWindowWidth;<br />
      glGCObjectHeight = lGCWindowHeight<br />
    }<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2009/10/sharepoint-custom-datasheet-mode-ie-crash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SPListItem Url</title>
		<link>http://blog.richardramdat.com/2009/09/splistitem-url/</link>
		<comments>http://blog.richardramdat.com/2009/09/splistitem-url/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 04:38:08 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=171</guid>
		<description><![CDATA[So you need to get a url reference to a SharePoint list item? Use SPListItem.Url right?
http://www.sharepointsecurity.com/sharepoint/sharepoint-development/splistitemurl-funky-return-fiesta/
]]></description>
			<content:encoded><![CDATA[<p>So you need to get a url reference to a SharePoint list item? Use SPListItem.Url right?</p>
<p><a href="http://www.sharepointsecurity.com/sharepoint/sharepoint-development/splistitemurl-funky-return-fiesta/">http://www.sharepointsecurity.com/sharepoint/sharepoint-development/splistitemurl-funky-return-fiesta/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2009/09/splistitem-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useless SharePoint Error &#8211; SPQuery / Caml</title>
		<link>http://blog.richardramdat.com/2009/09/useless-sharepoint-error-spquery-caml/</link>
		<comments>http://blog.richardramdat.com/2009/09/useless-sharepoint-error-spquery-caml/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 22:26:50 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=165</guid>
		<description><![CDATA[Came across this error while trying to execute a Caml query through the SPQuery object:
One or more field types are not installed properly. Go to the list settings page to delete these fields.
Don&#8217;t believe it, you don&#8217;t need to delete any fields. You more than likely have a misspelled column or a column name that [...]]]></description>
			<content:encoded><![CDATA[<p>Came across this error while trying to execute a Caml query through the SPQuery object:</p>
<p><em>One or more field types are not installed properly. Go to the list settings page to delete these fields.</em></p>
<p>Don&#8217;t believe it, you don&#8217;t need to delete any fields. You more than likely have a misspelled column or a column name that has a different internal name than what is publicly visible. For example, a default SharePoint calendar has a column field called &#8220;End Time&#8221;; however if you include the space within your query, you&#8217;ll get the error above. In this case, the internal name is really &#8220;EndDate&#8221;. Also look for column fields that have been renamed. Sometimes if you define a column, then later change its name &#8211; the internal name will still remain the same.</p>
<p>How are you supposed to know what the internal field name is? Well, here&#8217;s a tried and true method. Go to the list you are trying to query from, then click Settings -&gt; List Settings. Scroll down to where all the Columns are defined. Click on the one in question, which will take you to the FldEdit.aspx page. Within your address bar, notice the querystring param Field. This references the internal field name for the column which you should also use in your queries.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2009/09/useless-sharepoint-error-spquery-caml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint List Querying &#8211; Linq vs. CAML</title>
		<link>http://blog.richardramdat.com/2009/09/sharepoint-list-querying-linq-vs-caml/</link>
		<comments>http://blog.richardramdat.com/2009/09/sharepoint-list-querying-linq-vs-caml/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 04:01:18 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=154</guid>
		<description><![CDATA[One of the nice features of SharePoint 2007 development is the ability to use the latest release of the .NET framework and  its concomitant language features &#8211; including Linq. This in and of itself it a huge benefit as the inherit query mechanism within SharePoint &#8211; CAML is woefully terrible.
What is CAML? Officially, it stands for Collaborative [...]]]></description>
			<content:encoded><![CDATA[<p>One of the nice features of SharePoint 2007 development is the ability to use the latest release of the .NET framework and  its concomitant language features &#8211; including Linq. This in and of itself it a huge benefit as the inherit query mechanism within SharePoint &#8211; CAML is woefully terrible.</p>
<p>What is CAML? Officially, it stands for Collaborative Application Markup Language. Essentially, CAML is an xml structured intermediate query syntax for SharePoint to query against data structures (that can also be defined using CAML). Sounds a bit like SQL no? Well guess what CAML gets translated to in the back-end? Yep &#8211; SQL. SharePoint takes your CAML and queries against its sql backend. So in short, with CAML you have this massively verbose query syntax that requires nested xml tags, multi-line statements, and quoted attributes.</p>
<p>Enter Linq, with its terse sql-esque statements and amazing chainability. No more CAML!</p>
<p>Not quite.</p>
<p>Linq can only be used against a SPListItemCollection object which must be filled before use. The two most common ways to populate a SPListItemCollection is to either Get all items, or use a SPQuery object and CAML syntax to get a subset of items. As you can see, the dilemia presents itself that if you try to avoid CAML altogether, you will sacrifice performance when querying a list with potentially a large set of items.</p>
<p>So the best solution? Use both. Before using Linq directly to query items, first populate your SPListItemCollection with a CAML query that will do an adequate job of ensuring a manageable subset returned from the database. Then with Linq, fine-tune your SPListItemCollection to further sort and filter your result set. So Caml &#8211; Chainsaw, Linq &#8211; Carving Knife.</p>
<p>For more information, check out the excellent resource below:</p>
<p><a href="http://www.vanolstweb.nl/blog/documents/linq%20and%20sharepoint%20development.pdf">LINQ and SharePoint Development: The benefits and the pitfalls</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2009/09/sharepoint-list-querying-linq-vs-caml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

