<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ricardo Serradas &#187; LINQ</title>
	<atom:link href="http://blog.ricardoserradas.net/tag/linq/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ricardoserradas.net</link>
	<description>Visual Studio ALM in a nutshell</description>
	<lastBuildDate>Fri, 12 Nov 2010 13:25:20 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.ricardoserradas.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Ricardo Serradas &#187; LINQ</title>
		<link>http://blog.ricardoserradas.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.ricardoserradas.net/osd.xml" title="Ricardo Serradas" />
	<atom:link rel='hub' href='http://blog.ricardoserradas.net/?pushpress=hub'/>
		<item>
		<title>LINQ To Entities e o método Contains, um contorno</title>
		<link>http://blog.ricardoserradas.net/2010/01/08/linq-to-entities-e-o-metodo-contains-um-contorno/</link>
		<comments>http://blog.ricardoserradas.net/2010/01/08/linq-to-entities-e-o-metodo-contains-um-contorno/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 03:40:55 +0000</pubDate>
		<dc:creator>Ricardo Serradas</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Problema e Solução]]></category>
		<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://blog.ricardoserradas.net/?p=115</guid>
		<description><![CDATA[Olá a todos, Depois de muito tempo, volto a escrever. Tem sido uma dura correria que me impossibilitou de dar atenção a este valioso espaço. Porém, mais uma vez, prometo tentar reservar um pouco do meu tempo para enriquecer o conteúdo desta página. Volto hoje com um assunto que não costumo discutir aqui no blog, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=115&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá a todos,</p>
<p>Depois de muito tempo, volto a escrever. Tem sido uma dura correria que me impossibilitou de dar atenção a este valioso espaço. Porém, mais uma vez, prometo tentar reservar um pouco do meu tempo para enriquecer o conteúdo desta página.</p>
<p>Volto hoje com um assunto que não costumo discutir aqui no blog, que é codificação.</p>
<p>Ultimamente tenho ocupado quase que todo o meu tempo com estudos e discussões sobre a melhor forma de codificar algo. Um problema que encontrei dias atrás foi uma limitação do LINQ To Entities, que não implementou um método mapeado para a função <strong>&#8220;IN&#8221;</strong> do SQL. Um exemplo: quero obter todos os usuários do banco cujo ID é um dos números da sequência mística do seriado <em>LOST</em>, que é: 4, 8, 15, 16, 23, 42. A query SQL seria:</p>
<pre><span style="color:#993300;">SELECT * FROM USER U WHERE U.ID IN (4, 8, 15, 16, 23, 42)</span></pre>
<p> </p>
<p>Em tese, uma expressão LINQ para fazer a mesma coisa seria mais ou menos assim:</p>
<p>string[] ids = { &#8220;4&#8243;, &#8220;8&#8243;, &#8220;15&#8243;, &#8220;16&#8243;, &#8220;23&#8243;, &#8220;42&#8243; };</p>
<pre><span style="color:#0000ff;">var </span>users = (<span style="color:#0000ff;">from</span> t <span style="color:#0000ff;">in</span> _db.<span style="color:#339966;">User </span><span style="color:#0000ff;">where</span> ids.Contains(t.Id.ToString()) <span style="color:#0000ff;">select</span> t).ToList();</pre>
<p> </p>
<p>Em tempo de compilação, tudo certo. Porém, ao executar este código, você receberá esta mensagem de erro:</p>
<pre>LINQ to Entities does not recognize the method 'Boolean Contains(Int32)'</pre>
<p> </p>
<p>É possível estender as bibliotecas do LINQ para mapear a função, criar uma função ultra-complicada para fazer isso, mas há uma maneira de resolver com uma linha de código, que é:</p>
<pre><span style="color:#0000ff;">var</span> users = _db.<span style="color:#339966;">User</span>.Where("it.Id IN {" + <span style="color:#0000ff;">string</span>.Join(",", ids) + "}");</pre>
<p> </p>
<p>Atenção para a palavra chave “it”, ela representa sua entidade na query. Logo, Id é a propriedade.</p>
<p>Experimente!</p>
<p>[]&#8216;s</p>
<p>Ricardo Serradas</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardoserradas.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardoserradas.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardoserradas.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.ricardoserradas.net&amp;blog=9548763&amp;post=115&amp;subd=ricardoserradas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.ricardoserradas.net/2010/01/08/linq-to-entities-e-o-metodo-contains-um-contorno/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/06b58a0e94f42dbfd9f30ef9046f1807?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Serradas</media:title>
		</media:content>
	</item>
	</channel>
</rss>
