<?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>Gabriel Rodriguez Plancarte &#187; .NET 3.5</title>
	<atom:link href="http://gabrielrodriguez.net/tag/net-3-5/feed/" rel="self" type="application/rss+xml" />
	<link>http://gabrielrodriguez.net</link>
	<description>Tecnologia, Diseño, Negocios y Desarrollo</description>
	<lastBuildDate>Sat, 12 May 2012 01:41:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>No usar el metodo IEnumerable.Count de LINQ</title>
		<link>http://gabrielrodriguez.net/no-usar-el-metodo-ienumerable-count-de-linq/</link>
		<comments>http://gabrielrodriguez.net/no-usar-el-metodo-ienumerable-count-de-linq/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 05:49:27 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[LINQ To SQL]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=412</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/no-usar-el-metodo-ienumerable-count-de-linq/' addthis:title='No usar el metodo IEnumerable.Count de LINQ '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Los que usen LINQ, especificamente LINQ to SQL, favor de leer el siguiente articulo: IEnumerable.Count() is a Code Smell El articulo explica que es muy comun para cualquier desarrollador utilizar este metodo para hacer validaciones del tipo: El problema es que el metodo Count() de IEnumerable es un extension method que no va a hacer [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/no-usar-el-metodo-ienumerable-count-de-linq/' addthis:title='No usar el metodo IEnumerable.Count de LINQ ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/no-usar-el-metodo-ienumerable-count-de-linq/' addthis:title='No usar el metodo IEnumerable.Count de LINQ '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><div id="attachment_381" class="wp-caption aligncenter" style="width: 250px"><a href="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png"><img class="size-full wp-image-381" title=".NET Logo" src="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png" alt=".NET Logo" width="240" height="74" /></a><p class="wp-caption-text">.NET Logo</p></div>
<p>Los que usen LINQ,<strong> especificamente LINQ to SQL,</strong> favor de leer el siguiente articulo:</p>
<p><a title="IEnumerable.Count() is a code smell" href="http://rapidapplicationdevelopment.blogspot.com/2009/07/ienumerablecount-is-code-smell.html">IEnumerable.Count() is a Code Smell</a></p>
<p>El articulo explica que es muy comun para cualquier desarrollador utilizar este metodo para hacer validaciones del tipo:</p>
<pre class="brush: csharp; title: ; notranslate">if(products.Count() == 0) ... </pre>
<p>El problema es que el metodo <strong>Count() de IEnumerable es un extension method que no va a hacer short-circuit al encontrar más de un item </strong>al ser usado en el contexto del ejemplo anterior.</p>
<p>Peor aun, como la ejecución de LINQ To SQL es deferida, los resultados del metodo Count() no se quedan en cache y cualquier nueva llamada a Count() vuelve a iterar todos los elementos de la coleccion. Tomando en cuenta que LINQ To SQL esta accesando una base de datos&#8230;es muy mal performance.</p>
<p>El articulo sugiere <strong>usar como alternativa el metodo .Any()</strong>. que produce un SQL mas optimizado.</p>
<p>Y si se necesita hacer llamadas posteriores al Count() o Any(), <strong>se recomienda eliminar la deferred execution </strong>pasando los resultados del query de LINQ a una Lista, de la siguiente manera:</p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2b91af;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">
<pre class="brush: csharp; title: ; notranslate">IList&lt;Product&gt; products = GetProducts().ToList();</pre>
<p></span></p>
<p>Para detalles completos, favor de leer el articulo original, del blog de Lee Richardson, <a title="Rapid Application Development - Lee Richardson" href="http://rapidapplicationdevelopment.blogspot.com/">Rapid Application Development</a></p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/no-usar-el-metodo-ienumerable-count-de-linq/' addthis:title='No usar el metodo IEnumerable.Count de LINQ ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/no-usar-el-metodo-ienumerable-count-de-linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINQ is NOT LINQ To SQL</title>
		<link>http://gabrielrodriguez.net/linq-is-not-linq-to-sql/</link>
		<comments>http://gabrielrodriguez.net/linq-is-not-linq-to-sql/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 19:04:39 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://gabrielrodriguez.net/?p=378</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/linq-is-not-linq-to-sql/' addthis:title='LINQ is NOT LINQ To SQL '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Los que no sepan que es LINQ...les conviene leer este post, de Justin Etheredge, que aclara las confusiones entre la tecnologia LINQ (Language INtegrated Query) y el ORM LINQ To SQL. LINQ is NOT LINQ To SQL &#8211; Justin Etheredge, CodeThinked<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/linq-is-not-linq-to-sql/' addthis:title='LINQ is NOT LINQ To SQL ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://gabrielrodriguez.net/linq-is-not-linq-to-sql/' addthis:title='LINQ is NOT LINQ To SQL '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><div id="attachment_381" class="wp-caption aligncenter" style="width: 250px"><img class="size-full wp-image-381" title=".NET Logo" src="http://gabrielrodriguez.net/wp-content/uploads/2009/07/net-logo.png" alt=".NET Logo" width="240" height="74" /><p class="wp-caption-text">.NET Logo</p></div>
<p>Los que no sepan que es <strong>LINQ</strong>..<strong>.les conviene leer este post</strong>, de Justin Etheredge, que <strong>aclara las confusiones</strong> entre la tecnologia LINQ (Language INtegrated Query) y el ORM LINQ To SQL.</p>
<p><a title="LINQ is NOT LINQ To SQL" href="http://www.codethinked.com/post/2009/07/07/LINQ-is-not-LINQ-To-SQL.aspx">LINQ is NOT LINQ To SQL</a> &#8211; Justin Etheredge, CodeThinked</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://gabrielrodriguez.net/linq-is-not-linq-to-sql/' addthis:title='LINQ is NOT LINQ To SQL ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://gabrielrodriguez.net/linq-is-not-linq-to-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

