<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Blog del CIIN : LINQ</title><link>http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx</link><description>Etiquetas: LINQ</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>LINQ To SharePoint o LINQ4SP: Disponible la RC1!</title><link>http://geeks.ms/blogs/ciin/archive/2008/10/10/linq-to-sharepoint-o-linq4sp-disponible-la-rc1.aspx</link><pubDate>Thu, 09 Oct 2008 22:34:27 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:104971</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=104971</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/10/10/linq-to-sharepoint-o-linq4sp-disponible-la-rc1.aspx#comments</comments><description>Por fin, después de unos meses en lo que poco se ha sabido sobre la evolución de esta extensión de LINQ específicamente pensada para realizar consultas contra elementos de SharePoint, tenemos disponible la primera release candidate (RC1) de LINQ To SharePoint (LINQ4SP) . Podéis descargaros LINQ4SP de este enlace . Aparte de la noticia de la RC1 de LINQ4SP, creo que también es destacable que esta extensión de LINQ para SharePoint no esté incluida en el proyecto original de Codeplex , lo que creo que...(&lt;a href="http://geeks.ms/blogs/ciin/archive/2008/10/10/linq-to-sharepoint-o-linq4sp-disponible-la-rc1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=104971" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/sharepoint/default.aspx">sharepoint</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>SharePoint y LINQ (I)!</title><link>http://geeks.ms/blogs/ciin/archive/2008/09/03/sharepoint-y-linq-i.aspx</link><pubDate>Wed, 03 Sep 2008 18:25:30 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:97182</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=97182</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/09/03/sharepoint-y-linq-i.aspx#comments</comments><description>Recientemente en uno de los proyectos en los que estamos trabajando surgió la necesidad de consultar datos de una lista de SharePoint y mostrarlos ordenados en base a uno de los campos de la misma. La primera alternativa en la que pensamos para solventar esta necesidad fue la de CAML , pero entre medias también pensamos que LINQ era otra opción interesante. La primeras preguntas que nos surgieron aquí fueron ¿cómo está la integración de SharePoint y LINQ? , ¿puedo consultar datos de una lista de...(&lt;a href="http://geeks.ms/blogs/ciin/archive/2008/09/03/sharepoint-y-linq-i.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=97182" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/sharepoint/default.aspx">sharepoint</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>ADO.NET EF: ...enredando y más ejemplos (I)</title><link>http://geeks.ms/blogs/ciin/archive/2008/05/30/ado-net-ef-enredando-y-m-225-s-ejemplos-i.aspx</link><pubDate>Thu, 29 May 2008 22:51:53 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:87269</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=87269</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/05/30/ado-net-ef-enredando-y-m-225-s-ejemplos-i.aspx#comments</comments><description>En el último post sobre ADO.NET EF &amp;amp; LINQ To SQL os hablaba de que ya había algún ejemplo concreto para la Beta1 del SP1 de Visual Studio 2008. En concreto os hablaba del ejemplo ADO.NET Entity Framework Query Samples que está disponible en MSDN Code Gallery. El caso es que el equipo de ADO.NET nos comenta en una de sus últimas entradas que se han actualizado todos los ejemplos que había para ADO.NET EF a la Beta1 del SP1 de Visual Studio 2008. Entre los ejemplos actualizados, y que tendré que...(&lt;a href="http://geeks.ms/blogs/ciin/archive/2008/05/30/ado-net-ef-enredando-y-m-225-s-ejemplos-i.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=87269" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category></item><item><title>ADO.NET Entity Framework y LINQ To SQL: Ejemplos de las novedades del SP1 Beta 1!</title><link>http://geeks.ms/blogs/ciin/archive/2008/05/22/ado-net-entity-framework-y-linq-to-sql-ejemplos-de-las-novedades-del-sp1-beta-1.aspx</link><pubDate>Wed, 21 May 2008 22:11:51 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:86420</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>18</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=86420</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/05/22/ado-net-entity-framework-y-linq-to-sql-ejemplos-de-las-novedades-del-sp1-beta-1.aspx#comments</comments><description>Poco a poco empiezan a aparecer ejemplos de algunos de los cambios que vienen con el SP1 Beta 1 de .NET Framework 3.5 . En esta ocasión, os dejo algunos recursos interesantes sobre el tema: ADO.NET Entity Framework Query Samples Beta Refresh 1, se trata de un proyecto de tipo Windows Forms que podéis encontrar en MSDN Code Gallery . La aplicación permite probar una serie de consultas Entity SQL y LINQ to Entities al modelo definido sobre la base de datos Northwind. Documentación en MSDN sobre ADO...(&lt;a href="http://geeks.ms/blogs/ciin/archive/2008/05/22/ado-net-entity-framework-y-linq-to-sql-ejemplos-de-las-novedades-del-sp1-beta-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=86420" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category></item><item><title>VLINQ: Diseñador de consultas para LINQ To SQL!</title><link>http://geeks.ms/blogs/ciin/archive/2008/04/13/vlinq-dise-241-ador-de-consultas-para-linq-to-sql.aspx</link><pubDate>Sun, 13 Apr 2008 21:45:46 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:83041</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=83041</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/04/13/vlinq-dise-241-ador-de-consultas-para-linq-to-sql.aspx#comments</comments><description>&lt;p&gt;Si hace unos meses hablábamos de una útil e imprescindible herramienta para probar nuestras consultas LINQ como es &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/12/17/linqpad-191-adios-a-sql-server-management-studio-creo-que-no-pero.aspx"&gt;LINQPad&lt;/a&gt;, hace un rato me he encontrado otro diseñador de consultas específico para LINQ To SQL, pero que se diferencia de LINQPad en qué se trata de un diseñador que se integra con Visual Studio 2008 como un Add-In más y que nos ayuda en el diseño de dichas consultas. Se trata del proyecto &lt;a href="http://blogs.msdn.com/mitsu/archive/2008/04/02/visual-linq-query-builder-for-linq-to-sql-vlinq.aspx"&gt;VLINQ&lt;/a&gt;, que durante 6 meses fue desarrollado y liderado por un equipo de desarrollo francés en colaboración con &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt;. Os podéis descargar VLINQ de &lt;a href="http://code.msdn.microsoft.com/vlinq"&gt;este enlace&lt;/a&gt;.&lt;/p&gt; &lt;p align="center"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/mitsu/WindowsLiveWriter/VisualLinqquerybuilderforLinqtoSqlVLinq_A02A/clip_image016_2.jpg" alt="" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=83041" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>CIIN &amp; Nuberos.NET: LINQ &amp; ADO.NET Entity Framework!</title><link>http://geeks.ms/blogs/ciin/archive/2008/03/17/ciin-amp-nuberos-net-linq-amp-ado-net-entity-framework.aspx</link><pubDate>Mon, 17 Mar 2008 12:57:42 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:81112</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=81112</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/03/17/ciin-amp-nuberos-net-linq-amp-ado-net-entity-framework.aspx#comments</comments><description>&lt;p&gt;Después del retorno y &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/02/25/nuberos-net-volvemos-con-fuerza.aspx"&gt;primer evento de Nuberos.Net en 2008&lt;/a&gt; (sobre Silverlight y en el que José María Cuesta nos contó las posibilidades de Silverlight y surgieron discusiones interesantes sobre las otras grandes opciones que hay en el mercado: &lt;a href="http://www.w3.org/Graphics/SVG/"&gt;SVG&lt;/a&gt; y &lt;a href="http://www.adobe.com/es/products/flex/"&gt;Flex&lt;/a&gt;), estamos que no paramos y ya tenemos en marcha el evento correspondiente a este mes de marzo: &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373952&amp;amp;Culture=es-ES"&gt;LINQ &amp;amp; ADO.NET Entity Framework&lt;/a&gt;. Aquí van los detalles del evento:&lt;/p&gt; &lt;p&gt;&lt;img alt="CIIN &amp;amp; Nuberos.NET: LINQ &amp;amp; ADO.NET Entity Framework" src="http://www.ciin.es/web/servicios/eventos/PublishingImages/Evento_LINQ_Nuberos.jpg" border="0" /&gt;&lt;/p&gt; &lt;p&gt;Conoce LINQ, el nuevo &lt;i&gt;&lt;strong&gt;framework&lt;/strong&gt;&lt;/i&gt; que habilita la definición de consultas integradas en el lenguaje y permite crear querys contra objetos de memoria, bases de datos relacionales, documentos XML, y otros elementos. Haremos un recorrido práctico de las principales características y novedades de este nuevo lenguaje que vendrá con la nueva versión de Visual Studio, y que se apoya en las innovaciones de lenguaje introducidas en las nuevas versiones de C# (3.0) y VB (9.0). Veremos alguno de los sabores de LINQ como: LINQ To Objects, LINQ To SQL o LINQ To Entities...y completaremos el evento con la nueva revolución tecnológica en el acceso a datos en plataforma .NET: ADO.NET Entity Framework. Ven con nosotros y preparate para la gran revolución: &lt;strong&gt;&lt;em&gt;Are you ready?&lt;/em&gt;&lt;/strong&gt; &lt;p&gt;&lt;u&gt;&lt;strong&gt;Datos de interés:&lt;/strong&gt;&lt;/u&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Audiencia: &lt;/strong&gt;Desarrolladores, Jefe de Proyecto &lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Requistos previos: &lt;/strong&gt;Conocimientos del entorno Visual Studio 2005 / Visual Studio 2008&amp;nbsp; &lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Fecha: &lt;/strong&gt;Jueves, 27 de marzo &lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Hora:&amp;nbsp; &lt;/strong&gt;19:00 a 21:00 &lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Precio: &lt;/strong&gt;gratuito &lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Ponente:&lt;/strong&gt; Juan Carlos González Martín (Centro de Innovación en Integración, CIIN).&amp;nbsp; &lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Lugar:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;AGENCIA DE DESARROLLO LOCAL DE SANTANDER - Servicio de Promoción de Empresas y Autoempleo&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;Bajos del Mercado de México&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;c/ Alta 133&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;39008&amp;nbsp; Santander&amp;nbsp; CANTABRIA&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;España&lt;/strong&gt; &lt;p&gt;Más información y registro al evento &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373952&amp;amp;Culture=es-ES"&gt;en este enlace&lt;/a&gt;. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=81112" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category></item><item><title>Extensibilidad de LINQ: LINQ Flavours!</title><link>http://geeks.ms/blogs/ciin/archive/2008/03/02/extensibilidad-de-linq-linq-flavours.aspx</link><pubDate>Sun, 02 Mar 2008 11:55:05 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:75982</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=75982</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/03/02/extensibilidad-de-linq-linq-flavours.aspx#comments</comments><description>&lt;p&gt;Como sabéis, una de las grandes novedades de &lt;a href="http://msdn2.microsoft.com/es-es/vstudio/default.aspx" target="_blank"&gt;Visual Studio 2008&lt;/a&gt; y de .NET Framework 3.5 es el &lt;strong&gt;&lt;em&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx" target="_blank"&gt;Language Integrated Query&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; (&lt;strong&gt;&lt;em&gt;LINQ&lt;/em&gt;&lt;/strong&gt;) que habilita la definición de consultas integradas en el lenguaje de programación y es una de las piedras angulares de las nuevas versiones de C# y VB. Precisamente, muchas de las innovaciones que se han introducido en estas nuevas versiones son la base de LINQ, y el resumen de las mismas es el siguiente:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ExtensibilidaddeLINQLINQFlavours_10183/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="119" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ExtensibilidaddeLINQLINQFlavours_10183/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;Ahora bien, además de apoyarse en estas innovaciones, LINQ define un modelo ampliable y extensible para definir nuestras propias consultas o API&amp;#39;s de consulta, de manera que podemos ir más allá de las extensiones para LINQ que por defecto vienen con Visual Studio 2008, .NET Framework 3.5 y &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/01/25/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-i.aspx" target="_blank"&gt;ADO.NET Entity Framework&lt;/a&gt;:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ExtensibilidaddeLINQLINQFlavours_10183/image_8.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="148" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ExtensibilidaddeLINQLINQFlavours_10183/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt; &lt;ul&gt; &lt;li&gt;LINQ To Objects y LINQ To XML para trabajar con fuentes de datos no relacionales.  &lt;li&gt;Para ADO.NET tenemos:  &lt;ul&gt; &lt;li&gt;LINQ To Datasets  &lt;li&gt;LINQ To SQL  &lt;li&gt;LINQ To Entities&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p align="left"&gt;Tras esta pequeña introducción, la idea de este post es hacer una recopilación y recorrido por las extensiones que para LINQ se han ido creando durante los últimos dos años, &lt;a href="http://geeks.ms/blogs/ohernandez/archive/2008/02/22/sesi-243-n-quot-linq-en-profundidad-en-techdays-2008.aspx" target="_blank"&gt;algunos de los cuales presentó Octavio Hernández&lt;/a&gt; en su charla dentro del lanzamiento de Visual Studio 2008, SQL Server 2008 y Windows Server 2008 (me hubiera gustado estar en el evento y asistir a esta charla).. Empecemos.&lt;/p&gt; &lt;p align="left"&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;Proveedores de LINQ Personalizados&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt; &lt;p align="left"&gt;Como comentábamos, LINQ es un modelo completamente extensible y aquí están algunas de las extensiones que he ido descubriendo cuando he preparado seminarios de LINQ, en los propios cursos de LINQ,...&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;&lt;em&gt;&lt;a href="http://msdn2.microsoft.com/es-es/magazine/cc163329.aspx" target="_blank"&gt;PLINQ, o Parallel LINQ&lt;/a&gt;&lt;/em&gt;. Concebido inicialmente como un proyecto de investigación de &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt;, esta extensión &lt;a href="http://www.eweek.com/c/a/Application-Development/Microsofts-PLinq-to-Speed-Program-Execution/" target="_blank"&gt;permite que las consultas LINQ se puedan ejecutar en varios procesadores&lt;/a&gt;. La concepción en cuanto a uso de PLINQ es similar a la de LINQ To Objects y LINQ To XML, sin embargo, PLINQ necesita especificar de alguna forma que las consultas se van a ejecutar en varios procesadores: el método de extensión AsParallel...un ejemplo de como sería la sintaxis de PLINQ es el siguiente:&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;IEnumerable&amp;lt;T&amp;gt; data = ...; &lt;br /&gt;var q = from x in data.AsParallel() where p(x) orderby k(x) select f(x); &lt;br /&gt;foreach (var e in q) a(e);&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;CLINQ (que no es &lt;a href="http://www.codeplex.com/clinq" target="_blank"&gt;Continuous LINQ&lt;/a&gt;, proyecto en Codeplex que he descubierto esta tarde...), en este caso nos referimos al &lt;a href="http://tomasp.net/blog/clinq-project.aspx" target="_blank"&gt;proyecto CLINQ&lt;/a&gt; que &lt;a href="http://tomasp.net/about/" target="_blank"&gt;Tomas Petricek&lt;/a&gt;, MVP de C#, inició para que el lenguaje C++ tuviese soporte para LINQ (de hecho, cualquier lenguaje que soporte la CLS puede añadir sus propias implementaciones de LINQ). Por ejemplo, mediante las extensiones desarrolladas por Tomas para C++, la consulta a una BD en C++ quedaría:&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;pre&gt;// create connection to database
NorthwindData db(&amp;quot;.. connection string ..&amp;quot;);

// declare database query
Expr&amp;lt;Customers^&amp;gt; cvar = Var&amp;lt;Customers^&amp;gt;(&amp;quot;c&amp;quot;);
CQuery&amp;lt;String^&amp;gt;^ q = db.QCustomers
  -&amp;gt;Where(clq::fun(cvar, cvar.City == &amp;quot;London&amp;quot;))
  -&amp;gt;Select(clq::fun(cvar, 
      cvar.ContactName + Expr&amp;lt;String^&amp;gt;(&amp;quot;, &amp;quot;) + cvar.CompanyName));

// execute query and output results
for each(String^ s in q-&amp;gt;Query)
  Console::WriteLine(s);&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Tomas ha creado una &lt;a href="http://www.codeplex.com/linqextensions" target="_blank"&gt;sección en Codeplex dedicada a extensiones para LINQ&lt;/a&gt;. De momento está incluido CLINQ, pero según el autor, poco a poco irá añadiendo alguna más.&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="left"&gt;&lt;a href="http://www.codeplex.com/LINQtoSharePoint" target="_blank"&gt;LINQ To SharePoint&lt;/a&gt;, como no podía ser de otro modo, existe desde hace tiempo un proveedor de LINQ específicamente pensado para realizar consultas contra listas de SharePoint usando sintaxis LINQ. Esta extensión tiene su &lt;a href="http://www.codeplex.com/LINQtoSharePoint" target="_blank"&gt;sección correspondiente en Codeplex&lt;/a&gt;, y además de habilitar consultas LINQ, dispone de una herramienta de creación de clases sobre las que definir consultas a partir de listas de SharePoint: SpMetal (misma idea que el SQLMetal de LINQ To SQL). Actualmente en Codeplex tenemos disponble la versión v0.2.4.0 alfa preparada para .NET Framework 3.5 y Visual Studio 2008. Un &lt;a href="http://technoblogy.spaces.live.com/blog/cns!29F7CF27A98D236F!274.entry?wa=wsignin1.0" target="_blank"&gt;ejemplo de uso&lt;/a&gt; de esta extensión es el siguiente:&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;var ctx = new SharePointDataContext(new Uri(&lt;a href="http://fileserver/"&gt;http://fileserver&lt;/a&gt;));&lt;br /&gt;ctx.Credentials = new NetworkCredential(&amp;quot;dimitri&amp;quot;,&amp;quot;LinqToSharePoint&amp;quot;); 
&lt;p&gt;var books = ctx.GetList&amp;lt;Books&amp;gt;(); 
&lt;p&gt;var res = from b in books&lt;br /&gt;select new { b.Title, b.Author}; 
&lt;p&gt;foreach (var u in res)&lt;br /&gt;Console.WriteLine(u);&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="left"&gt;&lt;a href="http://weblogs.asp.net/fmarguerie/archive/2006/06/26/Introducing-Linq-to-Amazon.aspx" target="_blank"&gt;LINQ To Amazon&lt;/a&gt;, en este caso se trata de una extensión creada por uno de los autores del &lt;a href="http://www.manning.com/marguerie/" target="_blank"&gt;libro LINQ in Action&lt;/a&gt;, Fabrice Marguerie, que permite consultar libros de &lt;a href="http://www.amazon.com" target="_blank"&gt;Amazon&lt;/a&gt; mediane LINQ. De hecho, esta extensión permite consultas LINQ contra un cierto catálogo de libros, obteniendo las estructuras XML que devuelven los servicios web de Amazon. Un ejemplo de uso de esta extensión sería el siguiente:&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;var query =&lt;br /&gt;&amp;nbsp; from book in new Amazon.BookSearch()&lt;br /&gt;&amp;nbsp; where &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; book.Title.Contains(&amp;quot;ajax&amp;quot;) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (book.Publisher == &amp;quot;Manning&amp;quot;) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (book.Price &amp;lt;= 25) &amp;amp;&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (book.Condition == BookCondition.New)&lt;br /&gt;&amp;nbsp; select book;
&lt;p&gt;var sequence = query.ToSequence();&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="left"&gt;&amp;nbsp;&lt;a href="http://www.hookedonlinq.com/LINQToNHibernate.ashx" target="_blank"&gt;LINQ To NHibernate&lt;/a&gt;, esta extensión permite escribir consultas LINQ que son posteriormente traducidas a Criteria Queries que son ejecutadas por un objeto de Sesión NHibernate. Todo el código de este proyecto está accesible en &lt;a href="https://rhino-tools.svn.sourceforge.net/svnroot/rhino-tools/experiments/NHibernate.Linq/" target="_blank"&gt;este enlace&lt;/a&gt;...y aunque un poco fuera de tópico, fijaros en la sorpresa que os encontraréis si entráis en la página principal &lt;a href="http://www.hookedonlinq.com" target="_blank"&gt;Hooked on LINQ&lt;/a&gt;: &lt;a href="http://www.hookedonlinq.com/LINQReferenceStuff.ashx" target="_blank"&gt;LINQ Reference Stuff&lt;/a&gt;...pero fijaros en el formato ;) :&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href="http://www.cafepress.com/linq.225122905"&gt;&lt;img alt="Image" src="http://www.hookedonlinq.com/GetFile.aspx?File=Images%2fcombo_mug_front.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;img alt="Image" src="http://www.hookedonlinq.com/GetFile.aspx?File=Images%2fcombo_mug_back.jpg" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Desde luego, las tazas son &amp;quot;molonas&amp;quot;, creo que me las voy a pedir por esto y porque merece la pena darle soporte a Hooked on LINQ. Están realizando un excelente trabajo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="left"&gt;&lt;a href="http://code2code.net/DB_Linq/" target="_blank"&gt;DbLINQ Project&lt;/a&gt;, se trata de un proyecto en Code2Code en el que podéis encontrar las bases de un proveedor LINQ para bases de datos Oracle, MySQL y PostgreSQL. Como se comenta en la página del proyecto DbLINQ, se garantiza que las consultas simples funcionarán sin problemas, aunque no las complejas...precisamente la disponibilidad del código habilita que los desarrolladores puedan testear bien estas extensiones y evaluar, extender y corregir el comportamiento del proveedor al modelar consultas complejas. Las releases del código están en &lt;a href="http://code.google.com/p/dblinq2007/downloads/list" target="_blank"&gt;este enlace&lt;/a&gt;. Todo el proyecto se está desarrollando bajo licencia MIT para ser compatible con &lt;a href="http://www.mono-project.com" target="_blank"&gt;el proyecto Mono&lt;/a&gt;.&lt;/div&gt;
&lt;li&gt;
&lt;div align="left"&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2007/04/05/the-iqueryable-tales-linq-to-ldap-part-0.aspx" target="_blank"&gt;LINQ To LDAP&lt;/a&gt;, se trata de un proveedor capaz de enviar consultas LINQ a un directorio activo sobre LDAP partiendo de las expresiones de filtrado en LDAP que aparecen en la &lt;a href="http://www.faqs.org/rfcs/rfc2254.html"&gt;RFC 2254&lt;/a&gt;. Un ejemplo de uso de este proveedor creado por &lt;a href="http://community.bartdesmet.net" target="_blank"&gt;Bart de Smet&amp;#39;s&lt;/a&gt; es el siguiente:&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;font size="1"&gt;var users = new DirectoryObject&amp;lt;User&amp;gt;(new DirectoryEntry(&amp;quot;LDAP://localhost&amp;quot;), SearchScope.Subtree); &lt;br /&gt;var groups = new DirectoryObject&amp;lt;Group&amp;gt;(new DirectoryEntry(&amp;quot;LDAP://localhost&amp;quot;), SearchScope.Subtree); &lt;br /&gt;var res1 = from usr in users select usr; &lt;br /&gt;Console.WriteLine(&amp;quot;QUERY 1\n=======&amp;quot;); &lt;br /&gt;foreach (var w in res1) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;{0}: {1} {2}&amp;quot;, w.Name, w.Description, w.PasswordLastSet); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(); &lt;br /&gt;var res2 = from usr in users where usr.Name == &amp;quot;A*&amp;quot; select usr; &lt;br /&gt;Console.WriteLine(&amp;quot;QUERY 2\n=======&amp;quot;); &lt;br /&gt;foreach (var w in res2) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;{0}&amp;#39;s full name is {1}&amp;quot;, w.Name, w.Dn); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine();&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="left"&gt;&lt;a href="http://www.codeplex.com/LinqTfs" target="_blank"&gt;LINQ To TFS&lt;/a&gt;, esta nueva extensión creada por &lt;a href="http://geeks.ms/blogs/ohernandez" target="_blank"&gt;Octavio Hernández&lt;/a&gt;,y de la que tuve conocimiento a raíz del &lt;a href="http://geeks.ms/blogs/ohernandez/archive/2008/02/22/sesi-243-n-quot-linq-en-profundidad-en-techdays-2008.aspx" target="_blank"&gt;post de Octavio&lt;/a&gt;, la podemos encontrar en Codeplex y se trata de un proveedor de LINQ preparado para consultar el repositorio de Team Foundation Server en el que se hace el almacenamiento y control de versiones de Work Items.&lt;/div&gt;
&lt;li&gt;
&lt;div align="left"&gt;&lt;a href="http://spellcoder.com/blogs/bashmohandes/archive/2007/04/08/6552.aspx" target="_blank"&gt;LINQ To Flickr&lt;/a&gt;, esta extensión al estilo de LINQ To Amazon permite consultar fotografías de Flickr por tag, fecha de creación, identificador de usuario o título. El autor de esta extensión es el egipcio &lt;/div&gt;&lt;a href="http://spellcoder.com/blogs/bashmohandes/about.aspx" target="_blank"&gt;Mohammed Hossam El-Din&lt;/a&gt;.
&lt;li&gt;&lt;a href="http://james.newtonking.com/archive/2008/02/11/linq-to-json-beta.aspx" target="_blank"&gt;LINQ To JSON&lt;/a&gt;, se trata de una extensión para &lt;a href="http://james.newtonking.com/projects/json-net.aspx" target="_blank"&gt;JSon.NET&lt;/a&gt; que permite crear y consultar objetos JSON mediante consultas de LINQ. Su creador es James Newton, y esta extensión permite trabajar con objetos JSON de manera similar a como &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/03/07/linq-to-xml-integraci-n-de-xml.aspx" target="_blank"&gt;LINQ To XML&lt;/a&gt; permite manipular estructuras XML.&lt;/li&gt;&lt;/ul&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;font size="1"&gt;JObject o = JObject.FromObject(new&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;{&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp; channel = new&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp; {&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; title = &amp;quot;James Newton-King&amp;quot;,&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; link = &amp;quot;http://james.newtonking.com&amp;quot;,&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; description = &amp;quot;James Newton-King&amp;#39;s blog.&amp;quot;,&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; item = &lt;/font&gt;&lt;font size="1"&gt;from p in posts &lt;/font&gt;&lt;font size="1"&gt;orderby p.Title&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title = p.Title,&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; description = p.Description,&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; link = p.Link,&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; category = p.Categories&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp; }&lt;/font&gt;
&lt;p&gt;&lt;font size="1"&gt;});&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.asp.net/downloads/sandbox/blinq/" target="_blank"&gt;BLINQ&lt;/a&gt;, en este caso no se trata de una extensión en sí, sino de una herramienta (descontinuada) que permite generar sitios ASP.NET para visualizar, crear y manipular datos obtenidos mediante LINQ a partir de un cierto esquema relacional.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Y como podéis ver en este &lt;a href="http://weblogs.asp.net/hosamkamel/archive/2008/03/01/link-to-everything-a-list-of-linq-providers.aspx" target="_blank"&gt;recopilatorio Hosam Kamel&lt;/a&gt;, el listado completo de proveedores de LINQ que podemos encontrar en la red es este:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LINQ to Amazon.&lt;/li&gt;
&lt;li&gt;LINQ to Active Directory.&lt;/li&gt;
&lt;li&gt;LINQ to Bindable Sources (SyncLINQ).&lt;/li&gt;
&lt;li&gt;LINQ to CRM.&lt;/li&gt;
&lt;li&gt;LINQ to Geo - Language Integrated Query for Geospatial Data.&lt;/li&gt;
&lt;li&gt;LINQ to Excel&lt;/li&gt;
&lt;li&gt;LINQ to Expressions (MetaLinq).&lt;/li&gt;
&lt;li&gt;LINQ to Flickr.&lt;/li&gt;
&lt;li&gt;LINQ to Google.&lt;/li&gt;
&lt;li&gt;LINQ to Indexes (LINQ and i40).&lt;/li&gt;
&lt;li&gt;LINQ to IQueryable.&lt;/li&gt;
&lt;li&gt;LINQ to JSON.&lt;/li&gt;
&lt;li&gt;LINQ to LDAP.&lt;/li&gt;
&lt;li&gt;LINQ to NHibernate.&lt;/li&gt;
&lt;li&gt;LINQ to JavaScript.&lt;/li&gt;
&lt;li&gt;LINQ to Lucene.&lt;/li&gt;
&lt;li&gt;LINQ to Metaweb(freebase).&lt;/li&gt;
&lt;li&gt;LINQ to MySQL, Oracle and PostgreSql (DdLINQ project).&lt;/li&gt;
&lt;li&gt;LINQ to RDF Files.&lt;/li&gt;
&lt;li&gt;LINQ to Sharepoint.&lt;/li&gt;
&lt;li&gt;LINQ to SimpleDB.&lt;/li&gt;
&lt;li&gt;LINQ to Streams.&lt;/li&gt;
&lt;li&gt;LINQ to WebQueries.&lt;/li&gt;
&lt;li&gt;LINQ to WMI.&lt;/li&gt;
&lt;li&gt;LINQ to XtraGrid.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Está claro que el título del post de Hosam, LINQ To Everything, es muy apropiado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Creación de proveedores de LINQ personalizados&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Además de las extensiones comentadas, cualquier desarrollador puede crear las suyas propias. De hecho, estos son algunos ejemplos que muestran como habría que proceder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Escribir un proveedor personalizado desde cero: en &lt;a href="http://weblogs.asp.net/mehfuzh/archive/2007/10/04/writing-custom-linq-provider.aspx" target="_blank"&gt;esta entrada&lt;/a&gt; tenéis un ejemplo.&lt;/li&gt;
&lt;li&gt;Escribir proveedores personalizados partiendo del proyecto &lt;a href="http://www.codeplex.com/LinqExtender" target="_blank"&gt;LINQExtender de Codeplex&lt;/a&gt;. El ejemplo en este caso está &lt;a href="http://dotnetslackers.com/articles/csharp/CreatingCustomLINQProviderUsingLinqExtender.aspx" target="_blank"&gt;aquí&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;u&gt;&lt;strong&gt;Nota:&lt;/strong&gt;&lt;/u&gt;&lt;/em&gt; Ambos ejemplos han sido realizados por Mehfuz Hossain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;...¿y existe LINQ fuera de la plataforma Microsoft?&lt;/em&gt;&lt;/strong&gt; Buena pregunta, y la respuesta es que sí. De hecho, en el mundo Java ya ha aparecido &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=46887" target="_blank"&gt;LINQ for Java o Quaere&lt;/a&gt;. Como se comenta en &lt;a href="http://andersnoras.com/blogs/anoras/archive/2007/09/11/introducing-quaere-language-integrated-queryies-for-java.aspx" target="_blank"&gt;este post&lt;/a&gt;, Quaere is a DSL que añade sintaxis de consultas tipo SQL en el desarrollo de aplicaciones Java basándose en el modelo del proyecto LINQ ;)...como muestra, un pequeño ejemplo de Quaere:&lt;/p&gt;

&lt;div class="clearfix" id="container" style="border-top-width:0px;padding-right:0px;padding-left:0px;border-left-width:0px;background:none transparent scroll repeat 0% 0%;border-bottom-width:0px;padding-bottom:0px;width:778px;padding-top:0px;height:100.95%;border-right-width:0px;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:none transparent scroll repeat 0% 0%;padding-bottom:0px;margin:0px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#acb5ba;padding-bottom:0px;margin:0px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#a6afb3;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#a0a8ad;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#9aa2a6;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#949ca0;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#8e969a;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#888f93;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#83898d;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#7d8386;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:#777d80;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:none transparent scroll repeat 0% 0%;padding-bottom:0px;margin:0px 1px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;position:relative;height:1%;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;padding-bottom:0px;margin:0px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;position:relative;top:-15px;"&gt;
&lt;div style="border-right:medium none;padding-right:0px;border-top:medium none;display:block;padding-left:0px;background:none transparent scroll repeat 0% 0%;padding-bottom:0px;margin:0px 0px -15px;border-left:medium none;width:auto;padding-top:0px;border-bottom:medium none;height:1%;"&gt;
&lt;div id="wrapper"&gt;
&lt;div class="clearfix" id="content"&gt;
&lt;div class="entryview"&gt;&lt;pre&gt;&lt;code&gt;Integer[] numbersA = {0, 2, 4, 5, 6, 8, 9};&lt;br /&gt;Integer[] numbersB = {1, 3, 5, 7, 8};&lt;br /&gt;Iterable&amp;lt;Variant&amp;gt; pairs =&lt;br /&gt;    from(&amp;quot;a&amp;quot;).in(numbersA). &lt;br /&gt;    from(&amp;quot;b&amp;quot;).in(numbersB).&lt;br /&gt;    where(lt(&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;)).&lt;br /&gt;    select(&lt;br /&gt;        create(&lt;br /&gt;            property(&amp;quot;a&amp;quot;),&lt;br /&gt;            property(&amp;quot;b&amp;quot;)&lt;br /&gt;        )&lt;br /&gt;    );&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Sin más, hasta aquí llega este post en el que he intentado reflejar la extensibilidad de LINQ. Espero que os haya resultado interesante.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=75982" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category></item><item><title>ADO.NET Entity Framework: eSqlBlast...no es tan bueno como LINQPad, pero casi e igual de útil...</title><link>http://geeks.ms/blogs/ciin/archive/2008/02/11/ado-net-entity-framework-esqlblast-no-es-tan-bueno-como-linqpad-pero-casi-e-igual-de-250-til.aspx</link><pubDate>Mon, 11 Feb 2008 22:45:50 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:70712</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=70712</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/02/11/ado-net-entity-framework-esqlblast-no-es-tan-bueno-como-linqpad-pero-casi-e-igual-de-250-til.aspx#comments</comments><description>&lt;p&gt;En el &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/02/08/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-ii.aspx" target="_blank"&gt;último post sobre ADO.NET Entity Framework&lt;/a&gt; os comentaba otras formas de realizar consultas contra un &lt;a href="http://geeks.ms/blogs/jorge/archive/2008/01/31/linq-to-entities-y-visual-basic-2008-n-capas-parte-4.aspx" target="_blank"&gt;Entity Data Model&lt;/a&gt; (EDM) de ADO.NET Entity Framework: &lt;a href="http://msdn2.microsoft.com/en-us/library/bb387118.aspx" target="_blank"&gt;Entity SQL&lt;/a&gt; (eSQL) y &lt;a href="http://msdn2.microsoft.com/en-us/library/bb399603.aspx" target="_blank"&gt;Object / Entity Services&lt;/a&gt;. También os comentaba que existía una herramienta interesante de la que os iba a hablar en el siguiente post sobre ADO.NET Entity Framework...pues dicho y hecho. La herramienta en cuestión forma, como no podía ser de otro modo, de la correspondiente sección de Codeplex dedicada a ejemplos sobre la nueva versión de ADO.NET: &lt;a href="http://www.codeplex.com/adonetsamples" target="_blank"&gt;ADO.NET Samples&lt;/a&gt;. Y la herramienta en cuestión es eSQLBlast, la cuál os podéis descargar en la &lt;a href="http://www.codeplex.com/adonetsamples/Release/ProjectReleases.aspx?ReleaseId=9063" target="_blank"&gt;pestaña releases de esta sección de Codeplex&lt;/a&gt;. Como se indica en la página de descarga, eSqlBlast es una suite de herramientas diseñada para editar y ejecutar consultas eSQL contra EDM&amp;#39;s de ADO.NET Entity Framework. La versión actual de eSqlBlast funciona perfectamente (como os demostraré) con la &lt;a target="_blank"&gt;Beta 3 de ADO.NET Entity Framework&lt;/a&gt;, y la versión descargable de la misma es el proyecto de Visual Studio 2008 que hay que compilar para poder empezar a probar la herramienta. Finalmente, y no menos importante, el creador de esta genial herramienta que está sin duda al mismo nivel que &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/12/17/linqpad-191-adios-a-sql-server-management-studio-creo-que-no-pero.aspx" target="_blank"&gt;LINQPad&lt;/a&gt; (aunque esta le gana en el aspecto gráfico): &lt;a href="http://blogs.msdn.com/esql/" target="_blank"&gt;Zlatko Michailov&lt;/a&gt;, Program Manager de Microsoft. Sin más, veamos el funcionamiento y utilidad de eSqlBlast.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;eSqlBlast en acción&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Tras compilar el proyecto y ejecutar eSqlBlast, lo primero que tenemos que hacer es especificar la cadena de conexión al EDM correspondiente. Para ello, y siguiendo la pauta explicada en el post anterior para escribir cadenas de conexión a EDM&amp;#39;s para eSQL, eSqlBlast necesitará en primer lugar el connection string a la BD, y a continuación los archivos de metadatos que describen el modelo (archivos .csdl, .msl, y .ssdl):&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;font size="1"&gt;Data Source=.\SQLEXPRESS;AttachDbFilename=&amp;quot;C:\Documents and Settings\Administrator\Desktop\Labs LINQ\Soluciones &amp;amp; Demos\BD\CLIENTES.mdf&amp;quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Una vez que hemos especificado la cadena de conexión, basta con pulsar CONNECT para que eSqlBlast se conecte satisfactoriamente al EDM especificado:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_thumb_4.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;Una vez conectados, &lt;strong&gt;&lt;em&gt;¿que nos permite hacer eSqlBlast con el EDM?&lt;/em&gt;&lt;/strong&gt; Pues la respuesta es que tres cosas:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;Por un lado nos permite inspeccionar el modelo a través de la pestaña &lt;strong&gt;&lt;em&gt;Model&lt;/em&gt;&lt;/strong&gt;. Aquí tendremos que especificar el archivo de metadatos que describe a nivel conceptual el EDM (en este caso el archivo .csdl), y tras pulsar RENDER tendremos la descripción del EDM desde un punto de vista conceptual:&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_12.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="157" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_thumb_5.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_14.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_thumb_6.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p align="left"&gt;Como veis, eSqlBlast nos da la misma vista que tenemos con el Model Explorer en Visual Studio 2008, de manera que dado un cierto EDM podremos inspeccionar las entidades que lo componen, el tipo de las mismas en cuanto a descripción de sus&amp;nbsp; miembros, si hay tipos complejos, y las asociaciones existentes.&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;Realizar y ejecutar una consulta eSQL contra el modelo. Así, por ejemplo:&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;SELECT&amp;nbsp; clientes.ID_Cliente,clientes.DireccionCliente,clientes.CiudadCliente &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM BD_Clientes_Entities.Md_Clientes as clientes&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_16.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_thumb_7.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;Visualizar los resultados de la ejecución de la consulta eSQL contra el EDM. En este caso, no solo se visualiza el resultado de la ejecución eSQL, sino también la propia sentencia eSQL, el número de filas devueltas y la consulta T-SQL real que se envía a la BD (por cierto, tengo que encontrar en el código del proyecto como se saca esto pues lo desconozco para ADO.NET Entity Framework).&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_18.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkeSqlBlast.noest_14DF9/image_thumb_8.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;Y hasta aquí llega este post sobre eSqlBlast. Sin duda una herramienta útil que nos permite probar las características de eSQL y que además nos da una idea de hasta que punto es extensible ADO.NET Entity Framework. Espero que el post os haya resultado interesante.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=70712" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category></item><item><title>ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (II)</title><link>http://geeks.ms/blogs/ciin/archive/2008/02/08/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-ii.aspx</link><pubDate>Thu, 07 Feb 2008 23:30:31 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:69947</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=69947</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/02/08/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-ii.aspx#comments</comments><description>&lt;p&gt;Hace un par de semanas escribía &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/01/25/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-i.aspx" target="_blank"&gt;un primer post sobre ADO.NET Entity Framework&lt;/a&gt; complementario a la estupenda &lt;a href="http://geeks.ms/blogs/jorge/archive/2008/01/25/linq-to-entities-y-visual-basic-2008-parte-2.aspx" target="_blank"&gt;serie de posts&lt;/a&gt; que sobre esta temática ha venido realizando Jorge Serrano. En este post veíamos los fundamentos de ADO.NET Entity Framework, como construir un &lt;a href="http://geeks.ms/blogs/jorge/archive/2008/01/25/linq-to-entities-y-visual-basic-2008-parte-2.aspx" target="_blank"&gt;Entity Data Model&lt;/a&gt; (EDM) a partir de una cierta BD, y como realizar operaciones (de selección, inserción, actualización o borrado) mediante &lt;a href="http://geeks.ms/blogs/jorge/archive/2008/01/24/linq-to-entities-y-visual-basic-2008-parte-1.aspx" target="_blank"&gt;LINQ To Entities&lt;/a&gt;. La idea de este post es mostraros la flexibilidad de ADO.NET Entity Framework en cuanto a que para operar contra el EDM no sólo disponemos de LINQ To Entities, sino que tenemos otras dos opciones: &lt;a href="http://msdn2.microsoft.com/en-us/library/bb387118.aspx" target="_blank"&gt;Entity SQL&lt;/a&gt; (eSQL) y &lt;a href="http://msdn2.microsoft.com/en-us/library/bb399603.aspx" target="_blank"&gt;Entity Services&lt;/a&gt;. Empecemos.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Recordando los componentes de Entity Framework&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Aunque Jorge Serrano &lt;a href="http://geeks.ms/blogs/jorge/archive/2008/01/31/linq-to-entities-y-visual-basic-2008-n-capas-parte-4.aspx" target="_blank"&gt;ya nos explicó los componentes de un EDM&lt;/a&gt;, no está de más hacer un pequeño repaso de los mismos. Como ya comenté en el post anterior, una de las ideas claves de la nueva versión de ADO.NET es ahorrar tiempo a los desarrolladores a través de reducir la cantidad de código necesario para acceder a los datos, reducir el mantenimiento, facilitar la persistencia de los datos, etc. Todo ello es posible a través de la definición del correspondiente EDM, el cuál podemos consultar de las tres formas comentadas. Como siempre, una imagen vale más que 1000 palabras:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="244" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_thumb_1.png" width="167" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;Como veis, la clave de la realización de operaciones contra el EDM mediante cualquiera de los tres métodos está en un nuevo proveedor de datos: el Entity Client. Este proveedor permite interactuar contra el EDM mediante eSQL, que como veremos se trata de un nuevo lenguaje muy similar a T-SQL (sólo que las sentencias se ejecutan contra el EDM), Entity Services o LINQ To SQL que en este caso interactúan con el EDM a través de un objeto &lt;a href="http://msdn2.microsoft.com/es-es/library/system.management.objectquery(VS.80).aspx" target="_blank"&gt;ObjectQuery&lt;/a&gt; (que representa una consulta que devuelve un cierto objeto con los datos).&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Como nos comentaba Jorge Serrano, para entender como se realizan las operaciones contra el EDM es necesario conocer los componentes claves del mismo en la forma de tres capas:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Conceptual&lt;/strong&gt;&lt;/em&gt;, definida mediante un archivo .CSDL (&lt;a href="http://msdn2.microsoft.com/en-us/library/bb399292.aspx" target="_blank"&gt;Conceptual Schema Definition Language&lt;/a&gt;, o en otras palabras un archivo XML con información relativa a las entidades del modelo), el cuál incluye las entidades y las relaciones tal y como la capa de negocio de la aplicación las conoce.&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;De asignación&lt;/strong&gt;&lt;/em&gt;, definida con MSL (&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/07/DataPoints/default.aspx?loc=es" target="_blank"&gt;Mapping Schema Language&lt;/a&gt;, de nuevo otro XML con la información de mapeo entre la capa conceptual y la capa lógica), establece el mapeo entre las entidades del modelo conceptual y sus correspondencias con la BD.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;&lt;em&gt;Lógica&lt;/em&gt;&lt;/strong&gt;, definida con SSDL (&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/07/DataPoints/default.aspx?loc=es" target="_blank"&gt;Store Schema Definition Language&lt;/a&gt;), y representa el esquema de la BD&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="128" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Realizando consultas con eSQL&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Como hemos comentado, este nuevo lenguaje similar a T-SQL nos permite interactuar con el EDM de manera similar a como estábamos acostumbrados a realizar operaciones contra una cierta BD en ADO.NET 2.0: define objetos específicos para la conexión al EDM, objeto &lt;a href="http://msdn2.microsoft.com/en-us/library/system.data.entityclient.entityconnection.aspx" target="_blank"&gt;EntityConnection&lt;/a&gt;, para devolver los datos en una consulta de selección, objeto &lt;a href="http://msdn2.microsoft.com/en-us/library/bb739097.aspx" target="_blank"&gt;DBDataReader&lt;/a&gt;, o ejecutar comandos eSQL contra el modelo...todas las clases que siguen estos objetos están definidas en el &lt;a href="http://msdn2.microsoft.com/en-us/library/bb358362.aspx" target="_blank"&gt;System.Data.EntityClient&lt;/a&gt;. Por lo tanto, el primer paso para realizar operaciones contra el EDM vía eSQL es instanciar la clase EntityConnection especificando la correspondiente cadena de conexión, que por cierto no es nada trivial:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;EntityConnection ecConexion = new EntityConnection( @&amp;quot;metadata=.\CLIENTES_EDM.csdl|.\CLIENTES_EDM.ssdl|.\CLIENTES_EDM.msl;provider=System.Data.SqlClient;&amp;quot; + &amp;quot;provider connection string=&amp;#39;Data Source=.\\SQLEXPRESS;&amp;quot; + &amp;quot;AttachDbFilename=\&amp;quot;C:\\Documents and Settings\\Administrator\\Desktop\\Labs LINQ\\Soluciones &amp;amp; Demos\\BD\\CLIENTES.mdf\&amp;quot;;&amp;quot; + &amp;quot;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&amp;#39;&amp;quot; ); &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="1"&gt;ecConexion.Open();&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Como se observa, en la cadena de conexión es necesario especificar los distintos archivos de metadatos que configuran las distintas capas del EDM, así como la cadena de conexión para la BD. Una vez que hemos definido la cadena de conexión para el objeto EntityConnection, abrimos la conexión...esto se parece mucho al clásico ADO.NET...el siguiente paso es definir un comando eSQL mediante un objeto de tipo EntityCommand...dicho y hecho: &lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;EntityCommand ecComando =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new EntityCommand(&amp;quot;SELECT&amp;nbsp; clientes.ID_Cliente,clientes.DireccionCliente,&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;clientes.CiudadCliente FROM Entidades_BD_Clientes.Md_Clientes as clientes&amp;quot;, ecConexion);&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Lo que hemos hecho es definir una sentencia eSQL, que parece T-SQL, pero que no lo es porque estamos realizando las consultas contra una entidad del EDM (en este caso Md_Clientes que pertenece al EDM Entidades_BD_Clientes)...&lt;strong&gt;&lt;em&gt;¿y cómo ejecutamos este comando?&lt;/em&gt;&lt;/strong&gt; Pues a través del método ExecuteReader (para este caso en el que estamos realizando una Select) del objeto EntityCommand anterior. Lógicamente los resultados los recogeremos para su procesado en un objeto de tipo DbDataReader: &lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;using (DbDataReader dbdrReader =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecComando.ExecuteReader(CommandBehavior.SequentialAccess))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (dbdrReader.Read())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(dbdrReader[&amp;quot;ID_Cliente&amp;quot;] + &amp;quot;, &amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbdrReader[&amp;quot;DireccionCliente&amp;quot;] + &amp;quot; &amp;quot; + &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbdrReader[&amp;quot;CiudadCliente&amp;quot;]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Sin duda espectacular...y la salida por pantalla correspondiente es la siguiente:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="124" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_thumb_4.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Realizando consultas con Entity Services (u Object Services)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Finalmente, y para concluir el post, vamos a ver la tercera opción para realizar operaciones contra un EDM: los Entity Services (u Object Services). Esta alternativa permite devolver estructuras de información del EDM a través del método CreateQuery asociado al objeto &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/01/25/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-i.aspx" target="_blank"&gt;ObjectContext&lt;/a&gt; (y que implementa una interfaz de tipo ObjectQuery&amp;lt;T&amp;gt;), que acepta una instrucción eSQL o LINQ To Entities con parámetros que define una consulta que recuperará una cierta lista de entidades. Así, un ejemplo de ejecutar una sentencia eSQL con Entity Services sería: &lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;Console.WriteLine(&amp;quot;Entity Services&amp;quot;);&lt;br /&gt;string sCiudad = &amp;quot;Santander&amp;quot;;&lt;br /&gt;//ObjectQuery&lt;br /&gt;ObjectQuery&amp;lt;ClientesModel.Md_Clientes&amp;gt; esQuery =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModeloClientes.CreateQuery&amp;lt;ClientesModel.Md_Clientes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&amp;quot;SELECT VALUE c FROM Md_Clientes AS c WHERE c.CiudadCliente=@CiudadCliente&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new ObjectParameter(&amp;quot;CiudadCliente&amp;quot;,sCiudad)); &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="1"&gt;foreach (var c in esQuery)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(c.ID_Cliente);&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Y la correspondiente salida por pantalla sería la siguiente:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_12.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="122" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_14A4E/image_thumb_5.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;Y hasta aquí la segunda entrega de la serie de posts sobre ADO.NET Entity Framework. En el siguiente post os presentaré una utilidad muy interesante para realizar operaciones contra el modelo. Espero que el post os haya resultado interesante.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=69947" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category></item><item><title>Novedades en C# 3.0: Propiedades automáticas...¿Se permiten propiedades automáticas Read-Only o Write-Only?</title><link>http://geeks.ms/blogs/ciin/archive/2008/02/04/novedades-en-c-3-0-propiedades-autom-225-ticas-191-se-permiten-propiedades-autom-225-ticas-read-only-o-write-only.aspx</link><pubDate>Mon, 04 Feb 2008 12:15:34 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:68837</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=68837</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/02/04/novedades-en-c-3-0-propiedades-autom-225-ticas-191-se-permiten-propiedades-autom-225-ticas-read-only-o-write-only.aspx#comments</comments><description>&lt;p&gt;Hace unas semanas &lt;a href="http://geeks.ms/blogs/jalarcon/"&gt;Jos&amp;#233; M. Alarc&amp;#243;n&lt;/a&gt; nos hablaba de una de las innovaciones en el lenguaje que aparecen en C# 3.0: &lt;a href="http://geeks.ms/blogs/jalarcon/archive/2008/01/09/novedades-lenguaje-c-3-0-i-propiedades-autom-225-ticas.aspx"&gt;las propiedades autom&amp;#225;ticas&lt;/a&gt;. En ese post, nos explicaba como de manera muy sencilla, r&amp;#225;pida e intuitiva podemos definir una propiedad de manera autom&amp;#225;tica utilizando una sintaxis como la siguiente:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;public string Nombre { get; set; }&lt;a title="Novedades lenguaje C# 3.0 (I)- Propiedades autom&amp;#225;ticas" href="http://geeks.ms/blogs/jalarcon/archive/2008/01/09/novedades-lenguaje-c-3-0-i-propiedades-autom-225-ticas.aspx"&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;De manera que es el compilador el que generar&amp;#225; todo el resto de elementos que constituyen la variable privada. Ahora bien, (y esta cuesti&amp;#243;n surgi&amp;#243; en el &amp;#250;ltimo seminario que sobre Visual Studio 2008 hemos impartido en el &lt;a href="http://www.ciin.es"&gt;CIIN&lt;/a&gt;) una pregunta que nos pueden hacer es la siguiente: &lt;em&gt;&amp;#191;Es posible definir propiedades autom&amp;#225;ticas que sean Read-Only o Write-Only?&lt;/em&gt; La respuesta es que no, de hecho en &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2007/03/03/c-3-0-automatic-properties-explained.aspx%20"&gt;esta entrada&lt;/a&gt; ya se adelantaba que en las propiedades autom&amp;#225;ticas es obligatorio tener declarado un &amp;quot;getter&amp;quot; y un &amp;quot;setter&amp;quot;, es decir, no se permiten propiedades autom&amp;#225;ticas Read-Only o Write-Only...y como una imagen a veces vale m&amp;#225;s que mil palabras, aqu&amp;#237; ten&amp;#233;is la correspondiente prueba:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/Nov.SepermitenpropiedadesautomticasReadO_BA72/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/Nov.SepermitenpropiedadesautomticasReadO_BA72/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=68837" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Dynamic LINQ o como construir consultas dinámicas con LINQ!</title><link>http://geeks.ms/blogs/ciin/archive/2008/01/29/dynamic-linq-o-como-construir-consultas-din-225-micas-con-linq.aspx</link><pubDate>Tue, 29 Jan 2008 16:35:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:67420</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=67420</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/01/29/dynamic-linq-o-como-construir-consultas-din-225-micas-con-linq.aspx#comments</comments><description>&lt;p&gt;Una de las preguntas más típicas que surgen cuando he impartido algún seminario en el que se trata algún tema de &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;LINQ&lt;/a&gt; es como se pueden construir consultas dinámicas con LINQ, porque aparentemente LINQ no parece admitir este escenario puesto que la idea es escribir lo que el genial (uno de los grandes &amp;quot;culpables&amp;quot; de el diseño y creación de LINQ)&amp;nbsp; Scott Guthrie &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx"&gt;denomina consultas &amp;quot;type-safe&amp;quot;&lt;/a&gt;, es decir, consultas en las que tenemos soporte para intellisense, refactoring y comprobación de tipos en tiempo de compilación...pero, que pasa (escenario bastante habitual) si necesito una cierta flexibilidad que implique poder construir consultas más o menos dinámicas (por ejemplo, realizar consultas cambiantes en función de los datos de negocio seleccionados por el usuario de una cierta aplicación)...la clave está en la palabra &amp;quot;aparentemente&amp;quot;, puesto que como viene siendo habitual en los últimos tiempos, LINQ y las innovaciones en el lenguaje proporcionan los elementos adecuados para construir estas consultas dinámicas. En este caso estamos hablando de la LINQ Dynamic Query Library (&lt;strong&gt;&lt;em&gt;System.Linq.Dynamic&lt;/em&gt;&lt;/strong&gt;), de la que tenemos ejemplos de uso en la &lt;a href="http://msdn2.microsoft.com/en-us/bb330936.aspx"&gt;página de ejemplos descargables de VS 2008&lt;/a&gt;, o bien:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vbasic/bb964686.aspx"&gt;VB LINQ Dynamic Query Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vcsharp/bb894665.aspx"&gt;C# LINQ Dynamic Query Library&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Si nos bajamos cualquiera de los archivos de los vínculos anteriores, veremos que se trata de un conjunto de ejemplos sobre LINQ, siendo uno de los mismos el de Dynamic Query. Al abrir la solución, podremos ver que aparte de hacer referencia a la librería comentada (y que es una clase del proyecto de ejemplo que podemos usar), la construcción de una consulta LINQ dinámica tendría la siguiente forma:&lt;/p&gt;
&lt;table class="" cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;Northwind db = new Northwind(connString); &lt;br /&gt;db.Log = Console.Out; &lt;/p&gt;
&lt;p&gt;var query = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; db.Customers.Where(&amp;quot;City == @0 and Orders.Count &amp;gt;= @1&amp;quot;, &amp;quot;London&amp;quot;, 10). &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OrderBy(&amp;quot;CompanyName&amp;quot;). &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select(&amp;quot;New(CompanyName as Name, Phone)&amp;quot;);&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Como vemos, la clave está basada en la definición de expresiones tipo cadena, en lugar de código...¿y cómo es posible esto? Pues a través de una serie de métodos de extensión que permiten construir consultas en base a expresiones en cadena en lugar de las habituales expresiones lambda. Junto con el ejemplo de uso e la Dynamic Query Library viene algo de documentación sobre como utilizarla. Finalmente, comentaros que se puede utilizar para cualquier extensión de LINQ: LiNQ To Objects, LINQ To SQL, LINQ To XML, ...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=67420" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visua+Studio+2008/default.aspx">Visua Studio 2008</category></item><item><title>ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)</title><link>http://geeks.ms/blogs/ciin/archive/2008/01/25/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-i.aspx</link><pubDate>Fri, 25 Jan 2008 00:26:24 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:66353</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>41</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=66353</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/01/25/ado-net-entity-framework-linq-to-entities-entity-sql-y-entity-services-i.aspx#comments</comments><description>&lt;p&gt;Para complementar la serie de post que sobre &lt;a href="http://geeks.ms/blogs/jorge/archive/2008/01/24/linq-to-entities-y-visual-basic-2008-parte-1.aspx" target="_blank"&gt;LINQ To Entities y Visual Basic 2008&lt;/a&gt; ha iniciado Jorge Serrano, en este primer post sobre &lt;strong&gt;&lt;em&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa697427(VS.80).aspx" target="_blank"&gt;ADO.NET Entity Framework&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; os daré el punto de vista análogo a lo que Jorge ha explicado pero aplicado a la nueva versión de C # que aparece como una de las grandes novedades de &lt;a href="http://msdn2.microsoft.com/es-es/vstudio/default.aspx" target="_blank"&gt;Visual Studio 2008&lt;/a&gt;: C # 3.0. Antes de entrar en materia, la primera pregunta que se nos puede venir para los profanos en la materia es &lt;strong&gt;&lt;em&gt;¿Qué es ADo.NET Entity Framework?&lt;/em&gt;&lt;/strong&gt; Como se describe en &lt;a href="http://msdn2.microsoft.com/en-us/library/aa697427(VS.80).aspx" target="_blank"&gt;este artículo&lt;/a&gt;, una de las metas principales de la nueva versión de ADO.NET es elevar el nivel de abstracción de la programación contra fuentes de datos a través de la eliminación del &amp;quot;vacío&amp;quot; existente entre los modelos de datos y los lenguajes de programación. Y &lt;strong&gt;&lt;em&gt;¿Cómo es posible esto?&lt;/em&gt;&lt;/strong&gt; A través de dos innovaciones claves de las que ya se ha hablado mucho en Geek.Ms: &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx" target="_blank"&gt;LINQ&lt;/a&gt; y ADO.NET Entity Framework. Precisamente éste último (Entity Framework) es un nuevo componente que aparece en familia de tecnologías ADO.NET, que habilitará acceso a datos mediante LINQ utilizando: LINQ To SQL, LINQ To DataSet y/o LINQ To Entities. Si tuviésemos que resumir las características de este Entity Framework, sin duda destacaríamos los siguientes puntos:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Se trata de un &lt;em&gt;Framework que permite manipular y acceder a los datos como clases .NET.&lt;/em&gt;&lt;/li&gt; &lt;li&gt;Permite realizar un &lt;em&gt;modelado de datos a nivel conceptual&lt;/em&gt;, es decir, habilita la separación de las aplicaciones y los esquemas de BD.&lt;/li&gt; &lt;li&gt;Permite una &lt;em&gt;mejor interactuación de los datos con el entorno .NET:&lt;/em&gt; Se interactúa con objetos, frente a hacerlo con filas y columnas.&lt;/li&gt; &lt;li&gt;Proporciona una serie de servicios en tiempo de ejecución y en tiempo de diseño que permite a los desarrolladores describir los datos de la aplicación e interactuar con ellos a un nivel de abstracción conceptual claramente alineado con el concepto de implementación de aplicaciones de negocio, y que además ayuda a aislar la aplicación respecto a los esquemas de base de datos (BD) sobre los que se ha definido.&lt;/li&gt; &lt;li&gt;Como comentó Jorge en su post, se apoya en LINQ para definir las consultas a objetos del esquema EDM (Entity Data Model).&lt;/li&gt; &lt;li&gt;Supone una capa más, pero independiza las aplicaciones de el esquema de BD subyacente, independientemente de la tecnología de BD que se esté utilizando. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;¿En qué se traduce esta independencia con el esquema de BD y la tecnología de BD?&lt;/em&gt;&lt;/strong&gt; Pues básicamente en una arquitectura dividida en dos partes diferenciadas, Modelo de datos y Modelo Conceptual (EDM), en la que el paso de una parte a otra se realiza a través del correspondiente mapeo. Para realizar este mapeo se utilizan proveedores .NET que permiten interactuar con los datos en cada uno de las partes:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="244" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb.png" width="190" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt; &lt;td&gt;La idea es que el provider .NET de la capa de datos se encarga de traducir las operaciones de datos realizadas en la capa conceptual a un lenguaje entendible por la BD (lógicamente T-SQL). Por su parte, el proveedor .NET (EntitySQL) de la capa conceptual traduce las consultas LINQ realizadas en las aplicaciones a las correspondientes instrucciones que interactúen con el modelo conceptual definido mediante el proceso de mapeo.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Una vez repasadas las principales ideas y conceptos que hay bajo ADO.NET Entity Framework, vamos a ver en la práctica en que consiste trabajar en un nivel de abstracción superior. Los requisitos para poder probar ADO.NET Entity Framework ya los comentamos en &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/01/16/ado-net-entity-framework-lo-que-necesitas-para-empezar.aspx" target="_blank"&gt;este post&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Definiendo el EDM&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Cómo comentó Jorge en su post, el primer paso para trabajar con ADO.NET Entity Framework pasa por crear un modelo de entidades a partir de un cierto esquema de BD. Para ello añadimos al proyecto un elemento de tipo ADO.NET Entity Data Model con lo que se iniciará un asistente que nos guiará en la creación del modelo a partir de:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Especificar la opción de generación del EDM (a partir de una BD o bien un EDM vacío.&lt;/li&gt; &lt;li&gt;Especificar la cadena de conexión a la BD (que como siempre, puede ser un archivo físico o bien una instancia de SQL Server).&lt;/li&gt; &lt;li&gt;Especificar que objetos de la BD queremos que formen de nuestro EDM (en este caso, tablas y procedimientos almacenados).&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/Curso_LINQ_Lab4_3_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="218" alt="Curso_LINQ_Lab4_3" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/Curso_LINQ_Lab4_3_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="219" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="219" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Tras pulsar Finish en la última pantalla del asistente, ya tendremos creado el modelo de entidades que en esencia es un fichero &lt;b&gt;&lt;i&gt;.edmx&lt;/i&gt;&lt;/b&gt; que contiene toda la definición del modelo. Si inspeccionamos el modelo veremos: &lt;ul&gt; &lt;li&gt;Se han generado tantas entidades como tablas de la BD relacional.&lt;/li&gt; &lt;li&gt;Al seleccionar cada entidad, podremos ver los detalles de la misma en cuanto a miembros y la correspondencia de los campos de la entidad con sus equivalentes en la tabla de la BD.&lt;/li&gt; &lt;li&gt;El explorador del modelo nos permitirá ir navegando por los componentes del mismo: entidades, asociaciones entre entidades, funciones, etc.&lt;/li&gt; &lt;li&gt;Finalmente, para tener una idea del código generado por el asistente, basta con que nos vayamos al &lt;b&gt;&lt;i&gt;Class Viewer&lt;/i&gt;&lt;/b&gt; o al &lt;b&gt;&lt;i&gt;Object Browser &lt;/i&gt;&lt;/b&gt;e inspeccionemos los distintos elementos generados.&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="159" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_4.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_12.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="244" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_5.png" width="166" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Consultando Entidades&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Como ya comentó Jorge, una de las formas que tenemos para definir consultas contra el EDM es a través de &lt;strong&gt;&lt;em&gt;LINQ To Entities&lt;/em&gt;&lt;/strong&gt; que nos dota de toda la potencia y capacidades de LINQ sobre ADO.NET Entity Framework, así como funcionalidad de ORM (Object Relational Model), de manera que los desarrolladores pueden materializar sus entidades en tipos del CLR y programar de forma más sencilla contra el EDM y la base de datos. Lo primero que tenemos que hacer es añadir a nuestra aplicación las sentencias using necesarias:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;&lt;i&gt;using System.Data.EntityClient;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;i&gt;using System.Data.Common;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;i&gt;using System.Data;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;El siguiente paso consiste en instanciar el modelo EDM creado y definir la correspondiente consulta LINQ. Por ejemplo:&lt;/p&gt; &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#d9d9d9;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellspacing="0" cellpadding="0"&gt;  &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt; &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:black 1pt solid;width:494.6pt;padding-top:0cm;border-bottom:black 1pt solid;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//Instancia del modelo de entidades creado&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClientesModel.Entidades_BD_Clientes ModeloClientes=&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;new ClientesModel.Entidades_BD_Clientes();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//Consulta de entidades!&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;var clientes = &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;(from c in ModeloClientes.Md_Clientes&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;from v in ModeloClientes.Md_Vehiculos&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;where c.ID_Cliente==v.ID_Cliente&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;select c).Distinct();&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;***********Consulta LINQ To Entities***********&amp;quot;);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;foreach (var c in clientes)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;{&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;NIF={0}, Direccion={1}&amp;quot;,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c.ID_Cliente, c.DireccionCliente + &amp;quot; &amp;quot; + c.CiudadCliente);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.ReadLine();&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Como vemos, lo primero que hacemos es crear un objeto denominado ClientesModel que es una instacia de ClientesModel.Entidades_BD_Clientes(). La primera parte se corresponde a nuestro EDM, y la segunda (Entidades_BD_Clientes) es un objeto que ha sido añadida al modelo en el momento de su creación y que hereda de &lt;strong&gt;&lt;em&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb738465.aspx" target="_blank"&gt;ObjectContext&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;, clase que se encarga de mantener la conexión e información de los metadatos necesaria para leer, escribir, actualizar o borrar entidades en la BD. Además, también referencia la clase &lt;strong&gt;&lt;em&gt;ObjectStateManager&lt;/em&gt;&lt;/strong&gt; que se encarga de aspectos relacionados con el tracking de cambios y la resolución de identidades...esto ya &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/01/16/linq-to-sql-object-identitity-y-m-250-ltiples-objetos-datacontext.aspx" target="_blank"&gt;lo vimos con LINQ To SQL&lt;/a&gt;: si una consulta nos devuelve un objeto del modelo, este es persistido a través de otras consultas mientras que exista el objeto de contexto correspondiente. Sin más, la salida por pantalla que se obtiene de la consulta anterior es:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_14.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="47" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_6.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;&lt;strong&gt;&lt;em&gt;Operaciones de actualización, insercción y borrado de entidades&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Como ocurría con LINQ To SQL, ADO.NET Entity Framework a través de LINQ To Entities nos permite realizar de manera sencilla operaciones de actualización, inserción o borrado a través de la interactuación con las entidades del modelo. Para actualizar una entidad, basta con crear una instancia de la misma a partir de realizar una consulta a la BD de los resultados a actualizar (consulta con C # plano o mediante query expression): &lt;/p&gt; &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#d9d9d9;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellspacing="0" cellpadding="0"&gt;  &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt; &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:black 1pt solid;width:494.6pt;padding-top:0cm;border-bottom:black 1pt solid;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//Actualización&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;***********Actualizando las Entidades***********&amp;quot;);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClientesModel.Md_Clientes ClienteToUpdate =&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ModeloClientes.Md_Clientes.First(&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c =&amp;gt; c.ID_Cliente == &amp;quot;71505286B&amp;quot;);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClienteToUpdate.CiudadCliente=&amp;quot;Torrelavega&amp;quot;;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ModeloClientes.SaveChanges();&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;foreach (var c in clientes)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;NIF={0}, Direccion={1}&amp;quot;,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c.ID_Cliente, c.DireccionCliente + &amp;quot; &amp;quot; + c.CiudadCliente);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Como vemos, la clave para llevar los datos a la BD está en el método &lt;strong&gt;&lt;em&gt;SaveChanges(). &lt;/em&gt;&lt;/strong&gt;Por otro lado, tal y como sucede con el caso de la primera consulta, gracias a que el objeto &lt;strong&gt;&lt;em&gt;ObjectStateManager&lt;/em&gt;&lt;/strong&gt; de encarga del tracking de los datos, los antiguos y nuevos valores se mantienen en el contexto de la aplicación y los cambios se pueden guardar en la BD. La salida por pantalla de la operación de actualización es:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_16.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="62" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_7.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;Para añadir una entidad nueva basta con crear una nueva instancia de la entidad deseada, especificar sus propiedades y añadirla al modelo:&lt;/p&gt; &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#d9d9d9;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellspacing="0" cellpadding="0"&gt;  &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt; &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:black 1pt solid;width:494.6pt;padding-top:0cm;border-bottom:black 1pt solid;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//Insercción&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.ReadLine();&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;***********Añadiendo nuevas Entidades***********&amp;quot;);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClientesModel.Md_Clientes ClienteToAdd =&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;new ClientesModel.Md_Clientes();&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClienteToAdd.ID_Cliente = &amp;quot;72678934C&amp;quot;;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClienteToAdd.DireccionCliente = &amp;quot;C/ Ordoño II&amp;quot;;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClienteToAdd.CiudadCliente = &amp;quot;León&amp;quot;;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ModeloClientes.AddToMd_Clientes(ClienteToAdd);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;ModeloClientes.SaveChanges();&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;var AllClients =&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(from c in ModeloClientes.Md_Clientes&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;select c);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;foreach (var c in AllClients)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;{&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;NIF={0}, Direccion={1}&amp;quot;,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c.ID_Cliente, c.DireccionCliente + &amp;quot; &amp;quot; + c.CiudadCliente);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.ReadLine();&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;En este caso la clave para preservar los datos en la BD está en el método AddToMd_Clientes() que es generado automáticamente en el modelo de creación del EDM y que recibe un objeto del tipo de la entidada a añadir, así cómo en el método &lt;b&gt;&lt;i&gt;SaveChanges()&lt;/i&gt;&lt;/b&gt;. La correspondiente salida por pantalla es: &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_18.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="79" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_8.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Para realizar el borrado de una entidad, se sigue la misma filosofía que para el caso de la actualización e insercción, sólo que en este caso se utiliza el método &lt;strong&gt;&lt;em&gt;DeleteObject()&lt;/em&gt;&lt;/strong&gt; y a continuación &lt;strong&gt;&lt;em&gt;SaveChanges()&lt;/em&gt;&lt;/strong&gt; para poder llevar los datos a la BD:&lt;/p&gt; &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#d9d9d9;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellspacing="0" cellpadding="0"&gt;  &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt; &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:black 1pt solid;width:494.6pt;padding-top:0cm;border-bottom:black 1pt solid;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;//Borrado&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;***********Borrado de clientes***********&amp;quot;);&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClientesModel.Md_Clientes ClienteToDelete =&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ModeloClientes.Md_Clientes.First(&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c =&amp;gt; c.ID_Cliente == &amp;quot;72678934C&amp;quot;);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ModeloClientes.DeleteObject(ClienteToDelete);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ModeloClientes.SaveChanges();&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;Clientes después de borrar&amp;quot;);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;foreach (var c in AllClients)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;{&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine(&amp;quot;NIF={0}, Direccion={1}&amp;quot;,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c.ID_Cliente, c.DireccionCliente + &amp;quot; &amp;quot; + c.CiudadCliente);&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.ReadLine();&lt;/span&gt;&lt;span style="font-size:8pt;mso-fareast-language:en-us;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;La correspondiente salida por pantalla es:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_20.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="124" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLINQToEntitiesEnti_9F5/image_thumb_9.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;Y hasta aquí este primer post sobre ADO.NET Entity Framework en la práctica. En el próximo post os introduciré el concepto de Entity SQL y Entity Services, y os mostraré una interesante herramienta que tenemos disponible para facilitar la construcción de consultas contra un EDM. Espero que el post os haya resultado interesante.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=66353" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visua+Studio+2008/default.aspx">Visua Studio 2008</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category></item><item><title>ADO.NET Entity Framework: Lo que necesitas para empezar!</title><link>http://geeks.ms/blogs/ciin/archive/2008/01/16/ado-net-entity-framework-lo-que-necesitas-para-empezar.aspx</link><pubDate>Wed, 16 Jan 2008 12:01:53 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:64135</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=64135</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/01/16/ado-net-entity-framework-lo-que-necesitas-para-empezar.aspx#comments</comments><description>&lt;p&gt;Si has o&amp;#237;do hablar de ADO.NET Framework (por cierto, no esperes que aparezca como parte de .NET Framework 3.5) y est&amp;#225;s pensando en probarlo (en ello estoy...), lo primero que necesitas es instalarte en tu entorno los elementos necesarios:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;&lt;strong&gt;ADO.NET Entity Framework&lt;/strong&gt;&lt;/em&gt;, del que actualmente tenemos la versi&amp;#243;n Beta3 (liberada en diciembre como nos coment&amp;#243; Bruno). El enlace de descarga de la Beta 3 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D-9B18-D1A04A21B519&amp;amp;displaylang=en"&gt;es este&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Las &lt;strong&gt;&lt;em&gt;Tools para ADO.NET Framework&lt;/em&gt;&lt;/strong&gt;, pero antes de instal&amp;#225;rselas y para que no te pase lo que me pas&amp;#243; a m&amp;#237;, tienes que instalarte el &lt;a href="http://go.microsoft.com/fwlink/?linkID=104985"&gt;siguiente parche para VS 2008&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLoquenecesitaspara_B734/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="194" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/ADO.NETEntityFrameworkLoquenecesitaspara_B734/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;En cuanto al enlace de las Tools para ADO.NET Entity Framework, el enlace de descarga es &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=4&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=15db9989-1621-444d-9b18-d1a04a21b519&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d104983"&gt;este&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Ejemplos de ADO.NET Entity Framework disponibles en la &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=adonetsamples&amp;amp;ReleaseId=8858"&gt;correspondiente secci&amp;#243;n habilitada en Codeplex&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Y con esto ya puedes empezar a darle ca&amp;#241;a a ADO.NET Entity Framework.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=64135" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visua+Studio+2008/default.aspx">Visua Studio 2008</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category></item><item><title>LINQ To SQL: Object Identitity y múltiples objetos DataContext</title><link>http://geeks.ms/blogs/ciin/archive/2008/01/16/linq-to-sql-object-identitity-y-m-250-ltiples-objetos-datacontext.aspx</link><pubDate>Wed, 16 Jan 2008 08:16:37 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:64095</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=64095</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2008/01/16/linq-to-sql-object-identitity-y-m-250-ltiples-objetos-datacontext.aspx#comments</comments><description>&lt;p&gt;Una de las grandes caracter&amp;#237;sticas de LINQ To SQL es la capacidad de preservar la &lt;a href="http://msdn2.microsoft.com/en-us/library/bb399376.aspx"&gt;identidad y consistencia de objetos al realizar consultas LINQ&lt;/a&gt;, incluso en el caso en el que existan varios objetos &lt;strong&gt;&lt;em&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;DataContext&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;. Si dos consultas contienen resultados que se solapan, LINQ To SQL nos devuelve la misma entidad en cada conjunto de resultados de manera que la l&amp;#243;gica de la aplicaci&amp;#243;n se simplifica, pues se puede asumir que estos objetos son &amp;#250;nicos y de hecho consistentes. Sin embargo, con las API&amp;#8217;s tradicionales de acceso a datos, el desarrollador se ve forzado a capturar estos solapes para poder prevenir la creaci&amp;#243;n de m&amp;#250;ltiples copias id&amp;#233;nticas de resultados no &amp;#250;nicas. &lt;i&gt;&amp;#191;C&amp;#243;mo se gestiona la consistencia de estos objetos?&lt;/i&gt; A trav&amp;#233;s del objeto DataContext que asegura la consistencia y unicidad de dichos objetos. Adem&amp;#225;s, en el caso en el que en nuestra aplicaci&amp;#243;n tengamos m&amp;#225;s de un objeto DataContext, cada uno de esos mantendr&amp;#225; su propia copia individual de objetos.&lt;/p&gt;  &lt;p&gt;Un ejemplo de la preservaci&amp;#243;n de la identidad de objetos en LINQ es el siguiente:&lt;/p&gt;  &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#d9d9d9;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:black 1pt solid;width:494.6pt;padding-top:0cm;border-bottom:black 1pt solid;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;         &lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;//Preservaci&amp;#243;n de objetos                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console.WriteLine(&amp;quot;Ejemplo de preservaci&amp;#243;n de objetos&amp;quot;);                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;CLIENTES_ORMDataContext DB_New_DataContext =               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;new CLIENTES_ORMDataContext();                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;var c1 = DB_New_DataContext.Md_Clientes.First();                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;var c2 = DB_New_DataContext.Md_Clientes.First();&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;Console.WriteLine(&amp;quot;Nombre N&amp;#186;1 = {0}, Nombre N&amp;#186;2={1}\n c1==c2 es {2}&amp;quot;,               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;c1.NombreCliente,c2.NombreCliente,                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;object.ReferenceEquals(c1,c2));                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console.WriteLine(&amp;quot;El tipo de c1 es {0}, y el de c2 es {1}&amp;quot;,                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;c1.GetType().ToString(), c2.GetType().ToString());               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpLast" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;Console.ReadLine();&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:10pt;"&gt;             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;La correspondiente salida por pantalla es:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQToSQLObjectIdentitityymltiplesobjeto_8263/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="122" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQToSQLObjectIdentitityymltiplesobjeto_8263/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Luego efectivamente, los objetos c1 y c2 son id&amp;#233;nticos y hacen referencia al mismo objeto con los resultados tal y como atestigua el hecho de que tengan el mismo valor para la propiedad NombreCliente, y sobre todo porque la comparaci&amp;#243;n mediante el m&amp;#233;todo &lt;b&gt;&lt;i&gt;ReferenceEquals&lt;/i&gt;&lt;/b&gt; devuelve &lt;b&gt;&lt;i&gt;True&lt;/i&gt;&lt;/b&gt; como era de esperar. Por otro lado, evaluando el tipo de cada uno de los objetos (qu&amp;#233; es resuelto din&amp;#225;micamente por el compilador a partir de la caracter&amp;#237;stica de definir tipos impl&amp;#237;citamente de C# 3.0) vemos que es el mismo como cab&amp;#237;a esperar.&lt;/p&gt;  &lt;p&gt;Como hemos comentado, esta idea de preservaci&amp;#243;n de objetos en cuanto a identidad y consistencia se mantiene a&amp;#250;n cuando tengamos m&amp;#250;ltiples objetos &lt;b&gt;&lt;i&gt;DataContext&lt;/i&gt;&lt;/b&gt; en nuestra aplicaci&amp;#243;n. En este caso, el c&amp;#243;digo que demuestra esta idea ser&amp;#237;a el siguiente: &lt;/p&gt;  &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#d9d9d9;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:black 1pt solid;width:494.6pt;padding-top:0cm;border-bottom:black 1pt solid;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;         &lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;//Preservaci&amp;#243;n de objetos                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console.WriteLine(&amp;quot;Ejemplo de preservaci&amp;#243;n de objetos&amp;quot;);                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;CLIENTES_ORMDataContext DB_New_DataContext =               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;new CLIENTES_ORMDataContext();                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;var c1 = DB_New_DataContext.Md_Clientes.First();                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;var c2 = DB_New_DataContext.Md_Clientes.First();&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;               &lt;p&gt;&amp;#160;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;Console.WriteLine(&amp;quot;Nombre N&amp;#186;1 = {0}, Nombre N&amp;#186;2={1}\n c1==c2 es {2}&amp;quot;,               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;c1.NombreCliente,c2.NombreCliente,                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;object.ReferenceEquals(c1,c2));                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console.WriteLine(&amp;quot;El tipo de c1 es {0}, y el de c2 es {1}&amp;quot;,                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;c1.GetType().ToString(), c2.GetType().ToString());               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpLast" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;Console.ReadLine();&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:10pt;"&gt;             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;La correspondiente salida por pantalla es:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQToSQLObjectIdentitityymltiplesobjeto_8263/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="123" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQToSQLObjectIdentitityymltiplesobjeto_8263/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Luego vemos que efectivamente, los objetos c3 y c4 se refieren a la misma fila de resultado (consistencia), son id&amp;#233;nticos en cuanto a tipo, pero al aplicar el m&amp;#233;todo &lt;b&gt;&lt;i&gt;ReferenceEquals&lt;/i&gt;&lt;/b&gt; vemos que la comparaci&amp;#243;n devuelve &lt;b&gt;&lt;i&gt;False&lt;/i&gt;&lt;/b&gt; debido a que c3 y c4 ya no se refieren al mismo objeto de resultados, sino que cada uno se refiere a un objeto distinto, ya que en cada caso tenemos un objeto &lt;b&gt;&lt;i&gt;DataContext&lt;/i&gt;&lt;/b&gt; diferente.&lt;/p&gt;  &lt;p&gt;Finalmente, lo visto aplica si realizamos consultas que para un mismo DataContext devuelvan el mismo resultado: s&amp;#243;lo se crear&amp;#225; un objeto con los resultados. As&amp;#237;:&lt;/p&gt;  &lt;table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;background:#d9d9d9;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-right:black 1pt solid;padding-right:5.4pt;border-top:black 1pt solid;padding-left:5.4pt;padding-bottom:0cm;border-left:black 1pt solid;width:494.6pt;padding-top:0cm;border-bottom:black 1pt solid;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;         &lt;p class="MsoListParagraphCxSpFirst" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;//Preservaci&amp;#243;n de objetos con varios DataContext                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console.WriteLine(&amp;quot;Ejemplo de preservaci&amp;#243;n con una query&amp;quot;);                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;CLIENTES_ORMDataContext DB_New_DataContext3 =               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;new CLIENTES_ORMDataContext();                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;var query1 = DB_New_DataContext3.Md_Clientes.First(                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;q1 =&amp;gt; q1.ID_Cliente == &amp;quot;71505286B&amp;quot;);               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;var query2 =                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;(from q2 in DB_New_DataContext3.Md_Clientes               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;where q2.ID_Cliente == &amp;quot;71505286B&amp;quot;                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;select q2).First();&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;               &lt;p&gt;&amp;#160;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console.WriteLine(&amp;quot;Nombre N&amp;#186;1 = {0}, Nombre N&amp;#186;2={1}\n query1==query2 es {2}&amp;quot;,                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;query1.NombreCliente, query2.NombreCliente,                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;object.ReferenceEquals(query1, query2));                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;font size="1"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Console.WriteLine(&amp;quot;El tipo de query1 es {0}, y el de query2 es {1}&amp;quot;,                &lt;p&gt;&lt;/p&gt;             &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;query1.GetType().ToString(), query2.GetType().ToString());               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p class="MsoListParagraphCxSpLast" style="margin-left:0cm;mso-add-space:auto;"&gt;&lt;font size="1"&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;mso-bidi-language:en-us;"&gt;Console.ReadLine();&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:10pt;"&gt;             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;La correspondiente salida por pantalla es:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQToSQLObjectIdentitityymltiplesobjeto_8263/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="122" alt="image" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQToSQLObjectIdentitityymltiplesobjeto_8263/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Como conclusi&amp;#243;n, esta igualdad entre objetos es realmente importante para un framework de objectos relacionales como es LINQ To SQL puesto que asegura que ante una actualizaci&amp;#243;n del estado de una entidad, el cambio se propagar&amp;#225; de manera consistente a lo largo de toda la aplicaci&amp;#243;n.&lt;/p&gt;  &lt;p&gt;Espero que el post os haya resultado interesante...seguiremos escribiendo sobre otras caracter&amp;#237;sticas de LINQ que estamos descubriendo y que son espectaculares.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=64095" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visua+Studio+2008/default.aspx">Visua Studio 2008</category></item><item><title>LINQPad: ¿Adios a SQL Server Management Studio?...Creo que no, pero...</title><link>http://geeks.ms/blogs/ciin/archive/2007/12/17/linqpad-191-adios-a-sql-server-management-studio-creo-que-no-pero.aspx</link><pubDate>Mon, 17 Dec 2007 22:54:17 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:57969</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=57969</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2007/12/17/linqpad-191-adios-a-sql-server-management-studio-creo-que-no-pero.aspx#comments</comments><description>&lt;p&gt;Varios meses después de la última vez que escribimos sobre &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx" target="_blank"&gt;LINQ&lt;/a&gt;, hacía tiempo que tenía ganas de escribir sobre una utilidad (gratuita!) relacionada con &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx" target="_blank"&gt;LINQ&lt;/a&gt; y que no había podido probar hasta la semana pasada durante un descanso de uno de los seminarios del &lt;a href="http://www.ciin.es" target="_blank"&gt;CIIN&lt;/a&gt;...y esta utilidad no es otra que &lt;a href="http://www.linqpad.net/" target="_blank"&gt;LINQPad&lt;/a&gt;, el equivalente a SQL Server Management Studio para bases de datos de datos SQL Server Express, pero para LINQ To SQL puesto que esta utilidad solo funciona con bases de datos SQL Server. Según la página de su creador, además de permitirnos definir y probar nuestras consultas LINQ contra BD&amp;#39;s SQL Server, también podremos hacerlo contra objetos (LINQ To Objects) o archivos XML (LINQ To XML). En este post os mostraré como de sencillo resulta probar nuestras consultas LINQ To SQL mediante LINQPad. Empecemos.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Conectándonos a una BD SQL Server&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Nada más iniciar la aplicación (por cierto, es un simple archivo ejecutable que no tiene ningún requisito de instalación y que es autoactualizable...yo lo estoy ejecutando con una máquina virtual con Visual Studio 2008 RTM instalado y también con WSS 3.0), lo primero que podemos hacer es añadir una nueva conexión (al estilo de lo que ya conocemos de SQL Server Management Studio) para la que especificamos el servidor de BD, el modo de visualización, si vamos a atachar un archivo físico de base de datos, el tipo de autenticación,...vamos lo normal y conocido:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad1.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="165" alt="LINQPad1" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad1_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="244" alt="LINQPad2" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad2_thumb.png" width="177" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad3.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="LINQPad3" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad3_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Creando una consulta LINQ&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Una vez conectados a la BD, a través de la correspondiente editor de consulta, podremos definir la correspondiente consulta LINQ. En este caso yo voy a definir una consulta LINQ sencilla sobre una BD compuesta únicamente por tres tablas (podéis ver el diagrama de base de datos correspondiente), de manera que al ejecutarla obtenemos el resultado esperado...&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="169" alt="LINQPad4" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad4_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad5.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="158" alt="LINQPad5" src="http://geeks.ms/blogs/ciin/WindowsLiveWriter/LINQPadAdiosaSQLServerManagementStudio_15015/LINQPad5_thumb.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Nota:&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt; La consulta LINQ ejecutada es la siguiente (bastante sencilla como ya os comenté):&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;from c in MD_Clientes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; join ve in MD_ClienteVehiculos on&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.ID_Cliente equals ve.ID_Cliente&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; join v in MD_Vehiculos on&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ve.ID_Vehiculo equals v.ID_Vehiculo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; orderby c.ID_Cliente descending&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new{NIF=c.ID_Cliente,Nombre=c.SNombre + &amp;quot; &amp;quot; + c.SApellidos,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dieccion=c.SDireccion, Coche=v.SMarca + &amp;quot; &amp;quot; + v.SModelo}&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Como veis, en la consulta LINQ estoy utilizando algunas de las novedades en el lenguaje C# 3.0 que ya vimos en &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx" target="_blank"&gt;este post&lt;/a&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Inicializadores de objetos.&lt;/li&gt; &lt;li&gt;Operadores estándar de consulta.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Analizando la información que nos da LINQPad&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Además de comprobar que la consulta LINQ definida devuelve los resultados esperados, LINQPad adicionalmente nos permite:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Visualizar las expresiones lambda sobre las que se asienta la consulta, y que en este caso genera el siguiente listado lleno de estas expresiones, inicializadores de objetos y métodos de extensión (los propios operadores estándar de consulta)&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;MD_Clientes&lt;br /&gt;&amp;nbsp;&amp;nbsp; .Join (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MD_ClienteVehiculos, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c =&amp;gt; c.ID_Cliente, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ve =&amp;gt; ve.ID_Cliente, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (c, ve) =&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = c, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ve = ve&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;&amp;nbsp;&amp;nbsp; .Join (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MD_Vehiculos, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp0 =&amp;gt; temp0.ve.ID_Vehiculo, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v =&amp;gt; v.ID_Vehiculo, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (temp0, v) =&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;gt;h__TransparentIdentifier0 = temp0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v = v&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;&amp;nbsp;&amp;nbsp; .OrderByDescending (temp1 =&amp;gt; temp1.&amp;lt;&amp;gt;h__TransparentIdentifier0.c.ID_Cliente)&lt;br /&gt;&amp;nbsp;&amp;nbsp; .Select (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp1 =&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NIF = temp1.&amp;lt;&amp;gt;h__TransparentIdentifier0.c.ID_Cliente, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nombre = ((temp1.&amp;lt;&amp;gt;h__TransparentIdentifier0.c.SNombre + &amp;quot; &amp;quot;) + &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp1.&amp;lt;&amp;gt;h__TransparentIdentifier0.c.SApellidos&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dieccion = temp1.&amp;lt;&amp;gt;h__TransparentIdentifier0.c.SDireccion, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Coche = ((temp1.v.SMarca + &amp;quot; &amp;quot;) + temp1.v.SModelo)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; )&lt;/font&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;ul&gt; &lt;li&gt;La consulta T-SQL que es enviada a la BD, y que como vimos en &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx" target="_blank"&gt;este post&lt;/a&gt;, es generada por el objeto data context, que es el auténtico interprete y traductor de las consultas LINQ a las correspondiente sintaxis T-SQL. En este caso, el correspondiente objeto data context ha generado la siguiente consulta:&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;font size="1"&gt;SELECT [t0].[ID_Cliente] AS [NIF], ([t0].[sNombre] + @p0) + &lt;br /&gt;[t0].[sApellidos] AS [Nombre], [t0].[sDireccion] AS [Dieccion], &lt;br /&gt;([t2].[sMarca] + @p1) + [t2].[sModelo] AS [Coche]&lt;br /&gt;FROM [MD_Clientes] AS [t0]&lt;br /&gt;INNER JOIN [MD_ClienteVehiculo] AS [t1] ON &lt;br /&gt;[t0].[ID_Cliente] = [t1].[ID_Cliente]&lt;br /&gt;INNER JOIN [MD_Vehiculos] AS [t2] ON &lt;br /&gt;[t1].[ID_Vehiculo] = [t2].[ID_Vehiculo]&lt;br /&gt;ORDER BY [t0].[ID_Cliente] DESC &lt;/font&gt; &lt;p&gt;&lt;font size="1"&gt;-- @p0: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]&lt;br /&gt;-- @p1: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]&lt;br /&gt;-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;¿Y que más...?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Además de servirnos como herramienta de pruebas para nuestras consultas LINQ, LINQPad viene con un montón de ejemplos precargados (más de 200) que aparecen en el libro &lt;strong&gt;&lt;em&gt;C# 3.0 in a Nutshell&lt;/em&gt;&lt;/strong&gt; de Joseph y Ben Albahari, autores de esta interesantísima herramienta. En la propia página de la herramienta tenéis disponible todos los listados de código que aparecen en dicho libro (me parece que habrá que echarle un vistazo profundo), así como un pequeño Quiz para demostrar lo que sabemos de C# 3.0.&lt;/p&gt; &lt;p&gt;Sin más, esto es lo que os quería contar sobre LINQPad...os animo a probarla, es realmente chula y pude darnos mucho juego para probar nuestras consultas LINQ.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=57969" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Visual Studio 2008 Beta2: Realizando Consultas con LINQ (I)</title><link>http://geeks.ms/blogs/ciin/archive/2007/09/07/visual-studio-2008-beta2-realizando-consultas-con-linq-i.aspx</link><pubDate>Fri, 07 Sep 2007 10:18:28 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:32679</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=32679</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2007/09/07/visual-studio-2008-beta2-realizando-consultas-con-linq-i.aspx#comments</comments><description>&lt;p&gt;Hacía unos meses que tenía un poco olvidado a LINQ (en concreto a &lt;a href="http://msdn2.microsoft.com/en-au/netframework/aa904594.aspx"&gt;LINQ To SQL&lt;/a&gt;)&amp;nbsp;y también la máquina virtual de Visual Studio 2008 Beta2 (en este caso ha estadp en el olvidomenos tiempo), asique ayer después de verme un video de como interactuar con una BD SQL Server mediante LINQ To SQL y con VB.NET me decidí a comenzar una serie de posts en las que mostrar aspectos de LINQ que ya comenté en un &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;post prevío&lt;/a&gt;, y ya de paso refrescar algunas de las novedades que habréis leido / experimentado (sobre todo en &lt;a href="http://geeks.ms/members/elbruno.aspx"&gt;el blog de Bruno&lt;/a&gt;)&amp;nbsp;con Visual Studio 2008. También y siguiendo con el &lt;a href="http://geeks.ms/blogs/mllopis/archive/2007/09/07/presente-y-futuro-de-linq.aspx"&gt;llamamiento de Miguel LLopis&lt;/a&gt;, os animo a que experimentéis y probéis&amp;nbsp; LINQ y las &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;innovaciones en el lenguaje&lt;/a&gt; que vendrán con las nuevas versiones de C# y VB.NET.&lt;/p&gt; &lt;p&gt;En este post os voy a mostrar como de manera sencilla podemos definir un modelo de entidades con el OR Designer de LINQ sin más que arrastrar las tablas que nos interesen de una BD SQL Server a la superficie de diseño típica de Visual Studio.&amp;nbsp; Esta funcionalidad ya la teníamos con la primera preview de LINQ (mayo del año pasado) tal y como vimos en &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;este post&lt;/a&gt;. Algunos cambios que aparecen en el OR Designer son referentes a los archivos que se generan: un archivo .layout que es justo el modelo creado que estamos visualizando y el típico archivo &lt;strong&gt;&lt;em&gt;.designer.cs&lt;/em&gt;&lt;/strong&gt; en el que encontraremos todo el código que Visual Studio autogenera para crear el modelo de entidades. Empecemos&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Inspeccionando el modelo /fuente&amp;nbsp;de datos subyacente&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;El primer paso antes de abrir Visual Studio 2008 Beta2 es tener claro cómo es el modelo de datos con el que vamos a operar. LINQ cambia la forma en que hasta ahora accediamos a los datos, pasamos de crear consultas SQL &amp;quot;peagadas&amp;quot; en código o en procedimientos almacenados a definir consultas integradas e el lenguaje. Sin embargo, a la hora de crear una aplicación de acceso a datos con o sin LINQ, lo primero es tener claro el modelo de datos que hay por debajo. Para este primer ejemplo he creado una sencilla base de datos (BD) con tres tablas relacionadas. El diagrama entidad relación es el siguiente:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="183" alt="Post_LINQ_VisualStudio2008_B2" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Creando el proyecto de demo de LINQ To SQL&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Una vez que tenemos claro como es el modelo de datos, ya podemos irnos a Visual Studio 2008. Como siempre en un proyecto de Visual Studio, lo primero es crear nuestro proyecto. En este caso he optado por una aplicación Windows Forms, y en este primer punto ya tenemos una de las novedades de Visual Studio 2008: &lt;strong&gt;&lt;em&gt;framework multitargeting&lt;/em&gt;&lt;/strong&gt;, es decir, podemos escoger en base a que versión de .NET Framework implementar nuestras aplicaciones:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="162" alt="Post_LINQ_VisualStudio2008_B2_2" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_2_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Cómo véis, las versiones de .NET Framework soportadas son la 2.0, la 3.0 y la 3.5, pero no las previas (seguro que es una pregunta que nos van a hacer mucho). También cuanto más alta es la versión, más plantillas de proyecto vamos a tener puesto que la filosifía que se sigue es continuar con lo anterior y añadir lo nuevo (así, en la versión 3.5 tenemos plantillas para crear actividades WCF para utilizar en nuestros workflows). En este caso, la versión de framework que hemos de utilizar es la 3.5 pues es la que incluye la infraestructura de LINQ. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Inspeccionando los elementos del proyecto&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Una vez creado el proyecto de Windows Forms para .NET Framework 3.0, resulta interesante inspeccionar que &amp;quot;añadidos&amp;quot; tenemos en cuanto a referencias y espacios de nombres utilizados por el archivo .cs asociado al formulario.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_3_1.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="185" alt="Post_LINQ_VisualStudio2008_B2_3_1" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_3_1_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Como vemos, en el archivo .cs ya se añade directamente el espacio &lt;strong&gt;&lt;em&gt;System.Linq&lt;/em&gt;&lt;/strong&gt; que nos da el acceso a toda la infraestructura de LINQ para definir consultas integradas en el lenguaje. En cuanto a referencias &amp;quot;novedosas&amp;quot; añadidas al proyecto se ha añadido las siguientes: &lt;strong&gt;&lt;em&gt;System.Xml&lt;/em&gt;&lt;/strong&gt;, y &lt;strong&gt;&lt;em&gt;System.Xml.Linq&lt;/em&gt;&lt;/strong&gt; con el objeto de poder utilizar la &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/03/07/linq-to-xml-integraci-n-de-xml.aspx"&gt;nueva forma de trabajar con XML&lt;/a&gt; que también ha venido con el proyecto LINQ.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Creando el modelo de entidades&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;El sigueinte paso (fundamental) es definir el modelo de entidades. Para ello, añadimos al proyecto un nuevo elemento de tipo &lt;strong&gt;&lt;em&gt;LINQ To SQL Classes&lt;/em&gt;&lt;/strong&gt; (novedad) de manera que se visualizará la típica superficie de diseño (este es el OR Designer) en la que vamos a definir el modelo de entidades a partir de arrastrar las tablas que nos interesen de la BD con la que vamos a trabajar:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_3_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="145" alt="Post_LINQ_VisualStudioOrcas_3_2" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_3_2_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_4.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="154" alt="Post_LINQ_VisualStudioOrcas_4" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_4_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Para los que estáis acostumbrados a trabajar con ADO.NET y datasets tipados, el resultado final os resultará familiar puesto que lo que estamos teniendo es una representación de nuestro modelo de datos a través de las correspondientes entidades y con las mismas relaciones que tengamos a nivel de la BD. Si inspeccionamos el archivo .designer.cs que se genera a partir del modelo, veremos que tenemos toda la infraestructura necesaria para trabaja con él y realizar la interactuación con la BD subyacente:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;La clase&amp;nbsp;DataContext, que &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;como vimos&lt;/a&gt;&amp;nbsp;es el que se encarga, entre otras funciones, de realizar la conexión a la BD subyacente y realizar el proceso de &amp;quot;traducción&amp;quot; de las consultas integradas en el lenguaje a las correspondientes instrucciones T-SQL  &lt;li&gt;Una clase por cada una de las entidades que hemos &amp;quot;pintado&amp;quot; en el modelo. Para cada clase se generarán los atributos correspondientes a partir de&amp;nbsp;realizar el correspondiente mapeo con las columnas y relaciones que tenemos a nivel de la BD.  &lt;li&gt;Para interactúar con cada entidad, se generarán los correspondientes métodos de insercción, borrado, y actualización de datos.  &lt;li&gt;&amp;nbsp;...&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_8.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="174" alt="Post_LINQ_VisualStudioOrcas_8" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_8_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Diseño del formulario&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Esta paso es, para este ejemplo, el más sencillo. El formulario a diseñar mostrará un listado de datos recogidos de las tres tablas de nuestra BD y permitirá navegar por los mismos. Por lo tanto, necesitaremos un control de tipo &lt;strong&gt;&lt;em&gt;DataGridView&lt;/em&gt;&lt;/strong&gt;, un control de tipo &lt;strong&gt;&lt;em&gt;BindingNavigator &lt;/em&gt;&lt;/strong&gt;y su correspondiente &lt;strong&gt;&lt;em&gt;BindingSource&lt;/em&gt;&lt;/strong&gt;...con seleccionar, arrastrar y soltar listo:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="174" alt="Post_LINQ_VisualStudioOrcas_9" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Programando la lógica del formulario&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Una vez completados los pasos anteriores, ya estamos listos para definir la lógica asociada al formulario. Lo primero es instanciar un objeto &lt;strong&gt;&lt;em&gt;DataContext&lt;/em&gt;&lt;/strong&gt; de acuerdo a nuestro modelo de entidades para poder realizar operaciones contra la BD:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;em&gt;ModeloObjetosDataContext BD = new ModeloObjetosDataContext();&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Una vez que ya tenemos establecido el contexto de datos, ya podemos emepezar a crear consultas utilizando LINQ. En este caso, la consulta que vamos a realizar se debería corresponder con la siguiente sentencia T-SQL:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;em&gt;select&amp;nbsp; c.sNombreCliente,c.sApellidosCliente,c.sCiudadCliente,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; v.sMarca,v.sModelo,ve.iKilometros&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from MD_Clientes C&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join MD_ClienteVehiculo ve on&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ve.ID_Cliente = c.ID_Cliente&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join MD_Vehiculos v on&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; v.ID_Vehiculo=ve.ID_Vehiculo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by c.sCiudadCliente asc&lt;/em&gt;&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9_1.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="174" alt="Post_LINQ_VisualStudioOrcas_9_1" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9_1_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;A partir de esta consulta, empezamos la traducción a LINQ. Lo primero es definirnos un tipo &lt;strong&gt;&lt;em&gt;var&lt;/em&gt;&lt;/strong&gt; en el que volcaremos la estructura de datos devuelta. &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;Ya comentamos&lt;/a&gt; que es una innovación en el lenguaje que nos permite declarar tipos de manera ímplicita, es decir, sin especificarlo (siendo el compilador el que en tiempo de ejecución se encargue de determinar el tipo). A este tipo le asignamos la consulta a realizar...algo con lo que ya viene LINQ en Visual Studio 2008 Beta2 y que no teníamos con la preview de mayo de 2006 es el soporte de intellisense tanto para definir tipos ímplictios como para crear las consultas integradas en el lenguaje:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="76" alt="Post_LINQ_VisualStudioOrcas_9_2" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9_2_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9_3.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="80" alt="Post_LINQ_VisualStudioOrcas_9_3" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudioOrcas_9_3_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Con estas facilidades y conociendo como se definen las consultas integradas en el lenguaje con LINQ, &amp;quot;traducir&amp;quot; la consulta T-SQL anterior es bastante sencillo:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;em&gt;var clientes =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from c in BD.MD_Clientes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; join ve in BD.MD_ClienteVehiculos on&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.ID_Cliente equals ve.ID_Cliente&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; join v in BD.MD_Vehiculos on&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ve.ID_Vehiculo equals v.ID_Vehiculo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; orderby c.sCiudadCliente ascending&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new&amp;nbsp;{c.sNombreCliente,c.sApellidosCliente,c.sCiudadCliente, v.sMarca, v.sModelo, ve.iKilometros};&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Sin más, no tenemos más que forzar a que la consulta se ejecute vinculanto el tipo var con el control de datos que queramos (en este caso el &lt;strong&gt;&lt;em&gt;BindingSource&lt;/em&gt;&lt;/strong&gt;), configurar el resto de controles para que utilien este último, y añadir a nuestro código &lt;strong&gt;&lt;em&gt;BD.Log= Console.Out&lt;/em&gt;&lt;/strong&gt; para ver que comandos T-SQL se están enviando a la BD a través del objeto DataContext:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt; &lt;p&gt;&lt;em&gt;this.bindingSource1.DataSource = clientes;&lt;br /&gt;this.dataGridView1.DataSource = this.bindingSource1;&lt;br /&gt;this.bindingNavigator1.BindingSource = this.bindingSource1;&amp;nbsp;&lt;/em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_10.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="174" alt="Post_LINQ_VisualStudio2008_B2_10" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_10_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Bueno, pues como cabía el resultado es el mismo y la sentencia T-SQL que se envía a la BD es muy similar (con un estilo más depurado diria yo)&amp;nbsp;a la que nos planteamos inicialmente.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Entendiendo la ejecución de la consulta LINQ&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Finalmente, y aunque ya lo comenté en el &lt;a href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;primer post que hicimos sobre LINQ&lt;/a&gt;, vamos a ver cuál es el punto en que se ejecuta realmente la consulta. A primera vista, cabe pensar que esta se ejecuta en el momento en el que se define. Sin embargo, esto no es así. La consulta se ejecuta realmente contra la BD en el momento en el que se va a utilizar su resultado, es decir, en el momento en el que vinculamos el tipo var con el control &lt;strong&gt;&lt;em&gt;BindingSource&lt;/em&gt;&lt;/strong&gt;. Veamos que esto sucede de esta forma ejecutando el código paso a paso y comprobando que salida tenemos en la consola de salida de Visual Studio:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_11.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="130" alt="Post_LINQ_VisualStudio2008_B2_11" src="http://www.ciin.es/imagenes/VisualStudio2008Beta2RealizandoConsultas_9892/Post_LINQ_VisualStudio2008_B2_11_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Luego, cuando llegamos al punto de ruptura y ejecutamos el paso siguiente es el momento en el que la sentencia T-SQL se envía la BD y el resultado se vincula con el control &lt;strong&gt;&lt;em&gt;BindingSource&lt;/em&gt;&lt;/strong&gt;. Se está utilizando lo que en LINQ se conoce como ejecución diferida de consultas, es decir, estas se ejecutan en el momento en el que se va a hacer uso efectivo de las mismas.&lt;/p&gt; &lt;p&gt;Y hasta aquí llega el primer post de LINQ en Visual Studio 2008. Espero que os haya parecido interesante y que os animéis a creaer consultas con LINQ. Desde luego, para alguien acostrumbrado a escribir consultas en T-SQL, traducirlas a LINQ es realmente sencillo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=32679" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/Visua+Studio+2008/default.aspx">Visua Studio 2008</category></item><item><title>LINQ To SQL: Query Visualizer!</title><link>http://geeks.ms/blogs/ciin/archive/2007/04/29/linq-to-sql-query-visualizer.aspx</link><pubDate>Sun, 29 Apr 2007 20:50:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:13922</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=13922</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2007/04/29/linq-to-sql-query-visualizer.aspx#comments</comments><description>&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 12pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;El otro día me comentaba Rodrigo Corral que le parecían interesantes muchos de los posts que tenemos publicados en el &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.ciin.es/sites/blog"&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;blog del CIIN&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;, y que estaría bien que aparecieran también en &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://geeks.ms/blogs"&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Geeks&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;, por lo que dicho y hecho, este es el primero de los posts que rescatamos de nuestro blog para republicarlo en Geeks, y en el futuro lo que haremos será crossposting entre ambos blogs (primero tendremos que averiguar cómo hacer Crossposting entre nuestro blog basado en WSS 3.0 y &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://geeks.ms/blogs/ciin"&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;el blog del CIIN en Geeks&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 12pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;Sin más preámbulos, pasemos a la acción. En un post previo &lt;/SPAN&gt;&lt;U&gt;&lt;SPAN style="COLOR:#003399;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;introducimos LINQ To SQL&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;. Vimos como podíamos crear consultas integradas en el lenguaje para obtener información de un origen de datos relacional SQL Server, estas consultas se realizaban contra objetos de un modelo de objetos en el que mapeábamos elementos de un esquema relacional (tablas, columnas de las tablas y procedimientos almacenados). También comentamos que LINQ se apoya en muchas de las &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;innovaciones del lenguaje&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; que vendrán con C# 3.0 y VB 9.0 y en características propias como la evaluación diferida de consultas, es decir, la consulta que he creado no se ejecuta hasta que itero con ella. En la práctica, este mecanismo de evaluación diferida de consultas nos da la ventaja de que podamos evaluar una consulta múltiples veces puesto que su definición permanece en memoria. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 12pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Además de estas características clave, LINQ To SQL nos ofrece herramientas interesantes para facilitar en tiempo de depuración algo tan típico como comprobar que consulta T-SQL se está enviando a la BD y probarla sin tener que irnos a SQL Server Management Studio o a la ventana de comandos de Visual Studio. Esta herramienta es el &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://weblogs.asp.net/scottgu/archive/2006/09/01/Understanding-LINQ-to-SQL-Query-Translations.aspx"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri size=3&gt;LINQ To SQL Query Visualizer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/A&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;, que el IDE de Visual Studio nos ofrece en tiempo de depuración al posicionar el puntero del ratón sobre el tipo que va a almacenar el resultado de la ejecución de la consulta realizada: &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BACKGROUND:#d9d9d9;BORDER-COLLAPSE:collapse;mso-yfti-tbllook:1184;" cellSpacing=0 cellPadding=0 class="MsoNormalTable"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.25pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.25pt;PADDING-BOTTOM:0.75pt;BORDER-LEFT:black 1pt solid;WIDTH:423.45pt;PADDING-TOP:0.75pt;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;"&gt;
&lt;P class=MsoNoSpacing style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;mso-fareast-language:ES;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;var ClientesMarcaCoche =&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN:0cm 0cm 0pt 35.4pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;mso-fareast-language:ES;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;from c in BD2.Customers &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN:0cm 0cm 0pt 35.4pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;mso-fareast-language:ES;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;join ve in BD2.Vehicles on &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN:0cm 0cm 0pt 35.4pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;mso-fareast-language:ES;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;c.ID_Cliente equals ve.ID_Cliente &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN:0cm 0cm 0pt 35.4pt;"&gt;&lt;SPAN style="mso-fareast-language:ES;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;orderby c.CiudadCliente ascending &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN:0cm 0cm 0pt 35.4pt;"&gt;&lt;SPAN style="mso-fareast-language:ES;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;select new{NIF=c.ID_Cliente, &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN:0cm 0cm 0pt 35.4pt;"&gt;&lt;SPAN style="mso-fareast-language:ES;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Nombre=c.NombreCliente,Coche=ve.MarcaVehiculo};&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 12pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri size=3&gt;Para iniciar el Query Visualizer, no tenemos más que iniciar la ejecución del programa de LINQ To SQL en modo depuración y situar un punto de ruptura justo después de construir la consulta integrada en el lenguaje. Las capacidades del Visualizer aparecerán en el momento que pasamos el ratón sobre el tipo que almacena la consulta.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 12pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;A href="http://geeks.ms/photos/ciin/picture13915.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/13915/640x454.aspx" border=0&gt;&lt;/A&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 12pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Si pulsamos sobre la pestaña asociada al icono de la lupa, podremos ver el LINQ To SQL Visualizer, en el que se nos mostrará: &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:3.75pt 0cm 10pt 39.75pt;TEXT-INDENT:-18pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;mso-margin-bottom-alt:auto;tab-stops:list 36.0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:#666666;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#666666;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:Tahoma;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;La definición completa de la consulta que hemos definido en código, es decir, mostrando la llamada a los operadores estándar de consulta como métodos de extensión y las expresiones lambda que se están utilizando para luego generar la correspondiente sentencia T-SQL. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:#666666;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:Tahoma;mso-ansi-language:ES;mso-fareast-language:ES;mso-bidi-language:AR-SA;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;La sentencia T-SQL que se envía a la BD.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture13916.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/13916/640x308.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 12pt 18pt;LINE-HEIGHT:20.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Como vemos, en el visualizador se muestra la consulta definida en un formato en el que no estamos utilizando &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.danielmoth.com/Blog/2007/02/language-integrated-query.html"&gt;&lt;SPAN style="COLOR:#003399;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Query Syntax&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; y mostrando las expresiones lambda y otras innovaciones (tipos anónimos, inicialización de objeto, y uso de métodos de extensión a través de los operadores estándar de consulta) en el lenguaje que necesita para poder realizar la consulta. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:11pt;COLOR:#4c4c4c;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:ES;mso-fareast-language:ES;mso-bidi-language:AR-SA;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;Sin más, al pulsar el botón ejecutar podremos ver el resultado que nos devuelve la query T-SQL que LINQ genera a partir de la consulta definida en el lenguaje: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture13917.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/13917/640x367.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;Como veis, esta herramienta es realmente útil (de hecho, ha causado sensación en el primer seminario que sobre LINQ impartimos en el CIIN) para comprobar que las consultas devuelven los resultados esperados sin abandonar el entorno de depuración de Visual Studio 2005.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#4c4c4c;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt; Y hasta aquí el primer post que rescatamos del blog del CIIN, comentaros también que el sábado por la mañana me instalé la Beta 1 de Orcas y por fin integra plenamente LINQ en el IDE, espero pronto poneros algún&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;ejemplo chulo de LINQ en Visual Studio Orcas.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=13922" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ To XML: Integración de XML!</title><link>http://geeks.ms/blogs/ciin/archive/2007/03/07/linq-to-xml-integraci-n-de-xml.aspx</link><pubDate>Wed, 07 Mar 2007 16:39:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:11432</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=11432</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2007/03/07/linq-to-xml-integraci-n-de-xml.aspx#comments</comments><description>&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como no podía ser de otra forma, y después de hablar de las &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;FONT face=Calibri size=3&gt;bases de LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; y de &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;&lt;FONT face=Calibri size=3&gt;LINQ To SQL&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, desde el &lt;/FONT&gt;&lt;A href="http://www.ciin.es/"&gt;&lt;FONT face=Calibri size=3&gt;CIIN&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; nos faltaba comentar la “tercera pata” del &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;proyecto LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;: LINQ To XML. Lo de tercera pata va entrecomillado, porque ya tenemos a la vista nuevas capacidades (como &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/xmlteam/archive/2006/11/27/typed-xml-programmer-welcome-to-linq.aspx"&gt;&lt;FONT face=Calibri size=3&gt;LINQ To XSD&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;) y nuevas siglas &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;que integran las siglas LINQ (&lt;/FONT&gt;&lt;A href="http://www.codeproject.com/useritems/clinq.asp"&gt;&lt;FONT face=Calibri size=3&gt;CLINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, para habilitar el uso de parte de las características de LINQ en C++/CLI, &lt;/FONT&gt;&lt;A href="http://www.eweek.com/article2/0,1895,2009167,00.asp"&gt;&lt;FONT face=Calibri size=3&gt;PLINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, para definir una implementación de LINQ que permita la ejecución de código LINQ en múltiples CPU’s, &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;y seguro que algún componente más de LINQ sobre el que alguien ya está trabajando) y de las que espero poder comentaros cosas interesantes próximamente (especialmente de &lt;/FONT&gt;&lt;A href="http://www.asp.net/sandbox/app_blinq.aspx?tabid=62"&gt;&lt;FONT face=Calibri size=3&gt;BLINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;).&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Empecemos pues con LINQ To XML.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;¿Qué es LINQ To XML?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Según la &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;documentación oficial sobre LINQ,&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;LINQ To XML&lt;/I&gt;&lt;/B&gt; es el componente específico de LINQ pensado para trabajar con información en formato XML cacheada en memoria, aprovechando las ventajas de los &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;FONT face=Calibri size=3&gt;operadores estándar de consulta&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, y que además expone y añade nuevas funcionalidades para crear y manipular (a través de la integración en .NET Framework de toda la potencia que dan las transformaciones &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;A href="http://www.w3.org/TR/xpath"&gt;&lt;FONT color=#0000ff&gt;XPath&lt;/FONT&gt;&lt;/A&gt;&lt;/I&gt;&lt;/B&gt; y &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;A href="http://www.w3.org/TR/xquery/"&gt;&lt;FONT color=#0000ff&gt;XQuery&lt;/FONT&gt;&lt;/A&gt;&lt;/B&gt;) de manera sencilla tanto documentos XML completos como porciones o fragmentos de una estructura XML. Por supuesto, como sucedía con LINQ To SQL, LINQ To XML va a permitir combinar consultas y transformaciones de documentos o fragmentos XML con consultas de otros orígenes de datos (relacionales o no). Estas prestaciones de LINQ To XML se apoyan en las siguientes características clave:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Las &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;innovaciones del lenguaje&lt;/I&gt;&lt;/B&gt; (C# 3.0 y VB 9.0) que vimos en un &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;FONT face=Calibri size=3&gt;post previo&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, así como en las características propias de LINQ (consultas integradas en el lenguaje).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Consultas a estructuras XML integradas en el lenguaje&lt;/I&gt;&lt;/B&gt;, es decir, tenemos la potencia de XPath y XQuery dentro de C# y VB.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Se sigue manteniendo la &lt;/FONT&gt;&lt;A href="http://es.wikipedia.org/wiki/Document_Object_Model"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;experiencia de DOM&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, pero se utiliza de un modo más sencillo:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Visión centrada en los elementos particulares de una estructura XML, frente a la visión anterior centrada en el documento.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Construcción funcional y a medida de estructuras XML. No necesito construir un documento XML completo, y puedo trabajar directamente con elementos XML al estilo XPath.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Las estructuras XML se crean de un modo dinámico, lo que simplifica su tratamiento.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Supone una representación en memoria más eficiente, que se integra con la infraestructura de lectura/escritura de &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;System.Xml&lt;/I&gt;&lt;/B&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Se pueden cargar documentos XML existentes desde múltiples orígenes: &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XmlReader&lt;/I&gt;&lt;/B&gt;, &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;TextReder&lt;/I&gt;&lt;/B&gt;, o&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;un simple &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;String&lt;/I&gt;&lt;/B&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Siguiendo la misma referencia de otros post,&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;en la traducción de &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;El Proyecto LINQ&lt;/I&gt;&lt;/B&gt; de &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/LINQ_Project.mspx"&gt;&lt;FONT face=Calibri size=3&gt;Octavio Hernández&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, LINQ To XML define tres tipos de objetos en los que se basa la mayor parte de la integración de consulta contra estructuras XML. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XName&lt;/I&gt;&lt;/B&gt;, que habilita los mecanismos para trabajar de manera sencilla con los identificadores de espacios de nombres (QNames) utilizados en los nombres de elementos y atributos.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XElement&lt;/I&gt;&lt;/B&gt;, que viene a representar un elemento o nodo de una estructura / documento XML.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XAttribute&lt;/I&gt;&lt;/B&gt;, que es la representación de un atributo de un elemento.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Aunque estos tres tipos son las piezas claves de LINQ To XML, hay muchas más clases definidas en su jerarquía de clases (hasta la &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Preview de Mayo de 2006&lt;/I&gt;&lt;/B&gt;).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11424.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11424/617x237.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Después de esta introducción a lo que es LINQ To XML, en los siguientes apartados trataré de cubrir aspectos relativos a la construcción de estructuras XML, la integración con datos precedentes de fuentes no XML, y operaciones de manipulación y transformación de estructuras XML con LINQ To XML. Empecemos.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;U&gt;Nota:&lt;/U&gt;&lt;/I&gt;&lt;/B&gt; Los requisitos necesarios para probar LINQ To SQL son los que ya comentamos en el &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;FONT face=Calibri size=3&gt;primer post de LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Creación y consulta de información en estructuras XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Lo primero que vamos a ver es como de un modo sencillo podemos crear un sencillo documento XML (utilizando lo que LINQ To XML denomina &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Construcción Funcional&lt;/I&gt;&lt;/B&gt;, que permite crear un estructura XML, completa o no, en una única sentencia), y como también es realmente sencillo definir una consulta sobre dicha estructura (que no deja de ser un objeto en memoria fácilmente consultable con LINQ). El código necesario para crear el documento XML es el siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;XDocument DocXML= new XDocument(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XDeclaration("1.0","utf-8","yes"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;new XComment("Ejemplo de doc. generado con LINQ To XML"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;new XElement("Agenda",&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement("Contactos",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement("Contacto",new XAttribute("Categoría","Particular"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;new XElement("Nombre","José González")),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;new XElement("Contacto",new XAttribute("Categoría","Particular"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;new XElement("Nombre","María Méndez")),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement("Contacto",new XAttribute("Categoría","Trabajo"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement("Nombre","Antonio Muñoz")))));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine(DocXML);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Con el código anterior, estamos creando un documento XML a partir de instanciar el objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XDocument&lt;/I&gt;&lt;/B&gt; a través de una de las cuatro sobrecargas que tiene definidas. En concreto, la sobrecarga utilizada permite especificar mediante &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XDeclaration&lt;/I&gt;&lt;/B&gt; los valores utilizados para la versión, codificación y si el documento es standalone, y luego una lista de parámetros con los elementos que forman parte del documento XML y que en este caso son unos comentarios (especificados a través de &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XComment&lt;/I&gt;&lt;/B&gt;) y una jerarquía de elementos XML especificados mediante &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XElement&lt;/I&gt;&lt;/B&gt;. Finalmente, para visualizar por pantalla el documento vemos que no se necesita ningún tipo de factoría DOM, sino que es directamente visualizable sin hacer ningún tratamiento previo (lo que es una gran ventaja, ya que estamos creando un documento XML de un modo realmente sencillo con LINQ To XML). La salida por pantalla es la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11425.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11425/640x206.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Al esquema anterior le podemos añadir de manera sencilla un nombre XML utilizando el objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XNameSpace&lt;/I&gt;&lt;/B&gt;, que encapsula un espacio de nombres XML. Además, este documento no solo lo podemos visualizar de manera sencilla, sino que también guardarlo en disco realmente fácil utilizando el método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Save()&lt;/I&gt;&lt;/B&gt; del objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XDocument&lt;/I&gt;&lt;/B&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;XNamespace miEspacioNombres="http://www.ciin.es/esquemas";&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;XDocument DocXML= new XDocument(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XDeclaration("1.0","utf-8","yes"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;new XComment("Ejemplo de doc. generado con LINQ To XML"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Agenda",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;new XElement(miEspacioNombres + "Contactos",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Contacto",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XAttribute("Categoría","Particular"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Nombre","José González")),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Contacto",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XAttribute("Categoría","Particular"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Nombre","María Méndez")),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;new XElement(miEspacioNombres + "Contacto",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XAttribute("Categoría","Trabajo"),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Nombre","Antonio Muñoz")))));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine(DocXML.ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DocXML.Save("Contactos.xml");&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-fareast-theme-font:minor-fareast;mso-bidi-theme-font:minor-bidi;mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;En este caso, el documento XML guardado en disco tendría este aspecto:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-fareast-theme-font:minor-fareast;mso-bidi-theme-font:minor-bidi;mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11426.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11426/640x308.aspx" border=0&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;U&gt;Nota:&lt;/U&gt;&lt;/I&gt;&lt;/B&gt; Igual que con el método Save() podemos guardar una estructura XML en disco, el método Load() de XDocument nos permite cargar un documento que está guardado en disco y manipularlo del mismo modo en que estamos trabajando con estructuras XML creadas en memoria.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Definir consultas sobre un documento XML como el anterior es bastante sencillo a través del uso de los operadores estándar de consulta. A modo de ejemplo, el siguiente código nos permite obtener todos los contactos de tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Particular&lt;/I&gt;&lt;/B&gt; en el documento XML creado anteriormente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;FONT size=2&gt;Console.WriteLine("****Definiendo una consulta contra una estructura XML****");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var ContactosParticulares=&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;from c in DocXML.Descendants(miEspacioNombres + "Contacto")&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;where (string)c.Attribute("Categoría")=="Particular"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;orderby (string)c.Element(miEspacioNombres + "Nombre")&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;select c;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Hacemos efectiva la consulta&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach (var contacto in ContactosParticulares)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("{0}",contacto);&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Calibri size=3&gt;Del código anterior, hay que destacar un par de cosas:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;EL método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Descendant&lt;/I&gt;&lt;/B&gt; que nos permite obtener todos los elementos descendientes del tipo especificado (en este caso Contacto).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;El hecho que tanto en la condición de la cláusula &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;where&lt;/I&gt;&lt;/B&gt; como en la de la cláusula &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;orderby&lt;/I&gt;&lt;/B&gt; estamos indicado que de manera específica se trabaja con elementos del documento XML de tipo cadena. Y la razón de este modo de trabajo hay que buscarla en el hecho de que LINQ To XML permite tratar los valores contenidos en elementos y atributos respetando sus tipos sin más que hacer un simple cast (aquí tenemos otra ventaja de LINTO To XML, frente al W3C DOM que siempre trata los nodos XML como textos).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;La correspondiente salida por pantalla es la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11427.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11427/640x289.aspx" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;En esta salida vemos como efectivamente LINQ To XML no obliga a trabajar a nivel de documento XML completo, sino que podemos quedarnos a nivel de elementos XML.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Integración con datos no XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Hasta ahora hemos visto como es bastante sencillo construir estructuras XML utilizando la &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Construcción Funcional&lt;/I&gt;&lt;/B&gt; de LINQ To XML. Sin embargo, las estructuras que hemos construido se basan en ir añadiendo de manera estática elementos &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;de tipo string al árbol. Como comentamos, se podrían añadir otros tipos de datos, y por supuesto, podemos utilizar variables en la construcción en lugar de valores. Pero, ¿Cómo hacemos más dinámica esta construcción funcional? La respuesta está de nuevo en utilizar el tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/I&gt;&lt;/B&gt; aplicada a objetos de tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XElement&lt;/I&gt;&lt;/B&gt;, lo que nos permitirá construir estructuras XML a partir de objetos de memoria, resultados procedentes de hacer una consulta a una BD, etc. Para explicar este tipo de construcción, vamos a ver cómo podemos crear una estructura XML a partir de definir una consulta sobre un array de objetos de un cierto tipo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Lo primero es definir la clase a partir de la cuál crearemos los objetos contenidos en el array.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 36pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;class Contacto&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string Nombre;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;public string Telefono;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Lo siguiente que haremos es construir el arreglo de objetos aprovechándonos de algunas de las innovaciones en el lenguaje &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx"&gt;&lt;FONT face=Calibri size=3&gt;que ya vimos&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; (en concreto, declaración implícita de tipos, tipos&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;anónimos e inicializadores de objetos):&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;MARGIN:auto auto auto 36pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#d9d9d9;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt -0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var contactos_agenda=new[]{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt -0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new Contacto{Nombre="José González",Telefono="11111"},&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt -0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new Contacto{Nombre="Luis García", Telefono="22222"},&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt -0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt -0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Sin más, ya podemos construir una estructura XML (en este caso no vamos a construir un documento completo, sino sólo una serie de elementos XML) a partir de definir una consulta XML sobre el array de objetos creado:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;XElement Contactos= &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Contactos",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;from c in contactos_agenda&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;select new XElement(miEspacioNombres + "Contacto",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Nombre",c.Nombre),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement(miEspacioNombres + "Telefono",c.Telefono)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine(Contactos.ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-fareast-theme-font:minor-fareast;mso-bidi-theme-font:minor-bidi;mso-fareast-language:ES;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;La clave del código anterior está en que dentro de la cláusula &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Select&lt;/I&gt;&lt;/B&gt; podemos construir objetos de tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XElement&lt;/I&gt;&lt;/B&gt;, y en que los objetos de tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XElement&lt;/I&gt;&lt;/B&gt; pueden ser construidos a partir del resultado de una consulta a un objeto de memoria. La salida por pantalla generada es la siguiente:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-fareast-theme-font:minor-fareast;mso-bidi-theme-font:minor-bidi;mso-fareast-language:ES;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11428.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11428/640x317.aspx" border=0&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Igual que hemos construido una estructura XML a partir de definir una consulta contra un objeto de memoria, se aplicaría la misma filosofía y método para generar estructuras / documentos XML a partir de datos de una BD relacional y apoyándonos en LINQ To SQL &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx"&gt;&lt;FONT face=Calibri size=3&gt;como ya vimos&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Operación y manipulación de estructuras XML&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Como comentábamos, otra característica relevante de LINQ To XML es que permite realizar de un modo sencillo operaciones con estructura XML. Vamos a ver algunas de ellas:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;Operaciones de Transformación&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;, que nos permiten transformar y extender estructuras XML ya definidas. A partir de los elementos de una estructura XML existente, es posible crear nuevos elementos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 36pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;Console.WriteLine("***********Operaciones de Transformación***********");&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;XElement ElementoTransformado = &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XElement (miEspacioNombres +&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;"Amigos",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;from c in ContactosParticulares&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;select new XElement(miEspacioNombres + "Amigo",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new XAttribute("NombreCompleto",(string)c.Element(miEspacioNombres + &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;"Nombre"))));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n\n {0}",ElementoTransformado);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Lo que hemos hecho en el código anterior de la consulta de los contactos particulares del documento original XML para generar una estructura XML distinta, pero aprovechando datos de la consulta. La salida por pantalla obtenida es la siguiente:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11429.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11429/640x317.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;Añadir, eliminar y actualizar elementos&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;,&lt;/SPAN&gt;&lt;/I&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;LINQ To XML permite añadir, eliminar o modificar contenidos en una estructura XML a partir de los métodos &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Add(), Remove()&lt;/I&gt;&lt;/B&gt; y &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;ReplaceContent()&lt;/I&gt;&lt;/B&gt; del objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XElement&lt;/I&gt;&lt;/B&gt;. Así, para modificar la estructura anterior el código necesario sería:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("***********Añadir, Borrar, Modificar elementos**********");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;XElement Telefono=new XElement(miEspacioNombres&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;+ "Telefono","111111");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ElementoTransformado.Element(miEspacioNombres + "Amigo").Add(Telefono);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n Añadir");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n {0}",ElementoTransformado);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n Modificar");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ElementoTransformado.Element(miEspacioNombres&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;+ &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;"Amigo").Element(miEspacioNombres&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;"Telefono").ReplaceContent("22222");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n {0}",ElementoTransformado);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Borrar");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;ElementoTransformado.Element(miEspacioNombres&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;+ &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;"Amigo").Element(miEspacioNombres&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;+ "Telefono").Remove();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n {0}",ElementoTransformado);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Y la salida por pantalla correspondiente es la siguiente:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11430.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11430/640x391.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;Navegar por los nodos de una estructura XML&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;, LINQ To XML habilita varios mecanismos para navegar por los nodos de una estructura XML a través de los métodos &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Nodes()&lt;/I&gt;&lt;/B&gt; y &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Descendant()&lt;/I&gt;&lt;/B&gt; del objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XElement&lt;/I&gt;&lt;/B&gt;. Estos métodos nos facilitan la tarea de poder trabajar con elementos concretos de nuestra estructura XML. Un ejemplo de uso de ambos es el siguiente:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("****Navegando por los nodos de un elemento XML****");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n Con Descendants()");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach(var x in ElementoTransformado.Descendants(miEspacioNombres + &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;"Amigo")){&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine(x);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n Con Nodes()");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach(var x in ElementoTransformado.Nodes()){&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine(x);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;La salida por pantalla que se obtiene es la siguiente:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture11431.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/11431/640x315.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 35.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Como vemos, la salida que producen ambos métodos es la misma para el caso de una estructura XML sencilla. Para estructuras más complicadas, el resultado será distinto puesto que &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Descendants()&lt;/I&gt;&lt;/B&gt; siempre nos devolverá todos los elementos por debajo de&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;un elemento especificado, mientras que &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Nodes()&lt;/I&gt;&lt;/B&gt; siempre nos va a devolver los nodos por debajo del primer elemento en la jerarquía de la estructura XML en cuestión.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 35.4pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;U&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;Nota:&lt;/SPAN&gt;&lt;/U&gt;&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt; En el caso de trabajar con atributos, sólo es posible realizar operaciones de borrado de los mismos a través de los método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Remove()&lt;/I&gt;&lt;/B&gt; o &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;SetAttribute()&lt;/I&gt;&lt;/B&gt; del objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;XAttribute&lt;/I&gt;&lt;/B&gt;.&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;Finalmente,&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;y para concluir el post os dejo una recopilación de &lt;/SPAN&gt;las&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt; extensiones específicas de LINQ To XML que proporcionan la capacidad para realizar ciertas operaciones que tienen sentido al trabajar con estructuras XML&lt;/SPAN&gt; (algunas de ellas las hemos visto en las operaciones de manipulación y transformación de estructuras XML)&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableColorfulListAccent2 style="BORDER-COLLAPSE:collapse;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellSpacing=0 cellPadding=0 class="MsoTableColorfulListAccent2"&gt;

&lt;TR style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#9e3a38;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:161.35pt;PADDING-TOP:0cm;BORDER-BOTTOM:white 1.5pt solid;mso-background-themecolor:accent2;mso-background-themeshade:204;mso-border-bottom-themecolor:background1;"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;TEXT-ALIGN:center;mso-yfti-cnfc:5;" align=center&gt;&lt;B&gt;&lt;SPAN style="COLOR:white;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:background1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Operadores&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#9e3a38;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:269.3pt;PADDING-TOP:0cm;BORDER-BOTTOM:white 1.5pt solid;mso-background-themecolor:accent2;mso-background-themeshade:204;mso-border-bottom-themecolor:background1;"&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;TEXT-ALIGN:center;mso-yfti-cnfc:1;" align=center&gt;&lt;B&gt;&lt;SPAN style="COLOR:white;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:background1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Descripción&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:0;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:161.35pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-weight:bold;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Elements()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:269.3pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Devuelve todos los elementos hijos para cada XElement de una secuencia de XElements (IEnumerable &amp;lt;XElement&amp;gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:1;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:161.35pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-weight:bold;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Descendants() y Ancestors()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:269.3pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Nos permiten consultar respectivamente los elementos situados por encima y por debajo (en la jerarquía) del elemento especificado (sin incluirlo).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:2;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:161.35pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-weight:bold;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Attributes()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:269.3pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Es una extensión llamada en IEnumerable&amp;lt;XElement&amp;gt; que devuelve una secuencia de atributos (IEnumerable&amp;lt;Attributes&amp;gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:3;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:161.35pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-weight:bold;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;ElementsBeforeThis, ElementsAftherThis&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:269.3pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Permiten devolver todos los elementos hijos o contenidos que aparecen, respectivamente, antes y después de un elemento particular. En ambos casos devuelven un tipo IEnumerable&amp;lt;XElement&amp;gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:4;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:161.35pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-weight:bold;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;NodesBeforeThis, NodesAfterThis&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:269.3pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;SPAN style="COLOR:black;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Se comportan igual que ElementsBeforeThis y ElementsAfterThis, salvo que en este caso se devuelve un tipo IEnumerabe&amp;lt;XNode&amp;gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-fareast-theme-font:minor-fareast;mso-bidi-theme-font:minor-bidi;mso-fareast-language:ES;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;Y hasta aquí lo que os quería contar de LINQ To XML. En la próxima me gustaría comentaros otras iniciativas que están surgiendo en torno a LINQ, y enseñaros con ejemplos de que va BLINQ. Espero que el post os haya resultado de interés. Como en el post anterior, os dejo &lt;A href="http://geeks.ms/files/folders/ciin/default.aspx"&gt;aquí&lt;/A&gt; el zip con la solución del proyecto de LINQ To XML.&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=11432" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ To SQL: Definiendo un Modelo de Entidades y operando con él!</title><link>http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx</link><pubDate>Wed, 21 Feb 2007 11:38:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:10770</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=10770</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2007/02/21/linq-to-sql-definiendo-un-modelo-de-entidades-y-operando-con-l.aspx#comments</comments><description>&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Después de unos días ajetreados preparando el seminario sobre LINQ que próximamente impartiremos en el &lt;/FONT&gt;&lt;A href="http://www.ciin.es/"&gt;&lt;FONT face=Calibri size=3&gt;CIIN&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; (de hecho justo hoy hemos acabado de hacer las últimas pruebas con &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;LINQ To XML&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;), en este post os voy a comentar algunos aspectos interesantes que hemos aprendido sobre &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;LINQ To SQL&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;. Pero, &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;¿Qué es LINQ To SQL?&lt;/I&gt;&lt;/B&gt; Según la documentación disponible en el &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;sitio oficial del proyecto de LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;LINQ To SQL&lt;/I&gt;&lt;/B&gt; es el componente específico de LINQ que proporciona la infraestructura de runtime necesaria para utilizar datos relacionales como objetos y poder definir consultas sobre dichos objetos, es decir, habilita la consulta de contenedores de datos relacionales sin tener que abandonar la sintaxis o el entorno de tiempo de compilación.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Para hacer posible esto, LINQ To SQL se apoya en las siguientes características clave:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Las &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;innovaciones del lenguaje&lt;/I&gt;&lt;/B&gt; (C# 3.0 y VB 9.0) que vimos en un &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;FONT face=Calibri size=3&gt;post previo&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, así como en las características propias de LINQ (consultas integradas en el lenguaje).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Mapping&lt;/I&gt;&lt;/B&gt; del esquema de la BD en clases, propiedades, métodos, etc. De hecho, la correspondencia que LINQ To SQL hace entre los elementos de un esquema de una BD y los elementos correspondientes a nivel del CLR es el siguiente:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10756.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10756/640x464.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Persistencia&lt;/I&gt;&lt;/B&gt;, que habilita el control automático de cambios en la BD, y la actualización de datos a través de sentencias T-SQL.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/LINQ_Project.mspx"&gt;&lt;FONT face=Calibri size=3&gt;Integración de la información del esquema de la BD en metadatos del CLR&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;:las tablas se tratan como colecciones, los datos (columnas) son descritos en clases, la conexión a la BD y los resultados están tipados, etc. Cómo se comenta en el artículo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;El Proyecto LINQ&lt;/I&gt;&lt;/B&gt; (&lt;/FONT&gt;&lt;A href="http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/LINQ_Project.mspx"&gt;&lt;FONT face=Calibri size=3&gt;traducción de Octavio Hernández&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;), esta integración es la que permite compilar las definiciones de tablas y vistas SQL en tipos del CLR para que puedan ser accedidas desde cualquier lenguaje.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;En la práctica, LINQ To SQL&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;provee de los mecanismos necesarios para encapsular y utilizar en nuestras aplicaciones la definición (completa o no) de un cierto esquema relacional, y poder definir consultas LINQ sobre las clases mapeadas. El esquema de la arquitectura de LINQ To SQL nos permitirá comprender mejor las ideas expuestas:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10757.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10757/640x359.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como se puede deducir, los puntos clave de la arquitectura de LINQ To SQL son los siguientes:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;FONT face=Calibri size=3&gt;Consultas a nivel de aplicación integradas en el lenguaje.&lt;/FONT&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;"&gt;&lt;FONT face=Calibri size=3&gt;Base de datos &lt;B&gt;&lt;I&gt;tipada&lt;/I&gt;&lt;/B&gt; en objetos: mapeo a través de atributos, devuelve objetos al realizar consultas SQL.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;FONT face=Calibri size=3&gt;LINQ To SQL garantiza la persistencia, control de cambios y control de concurrencia.&lt;/FONT&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;"&gt;&lt;FONT face=Calibri size=3&gt;LINQ To SQL &lt;B&gt;&lt;I&gt;traduce las consultas en SQL &lt;/I&gt;&lt;/B&gt;que se envía a la BD: las consultas no se ejecutan en memoria y &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;no se transmiten como IL al servidor BD.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Bueno, después de esta introducción “tan teórica”, es el momento de pasar a la acción. En los siguientes apartados trataré de cubrir aspectos relativos al mapeado de objetos de acuerdo a un esquema relacional existente, y como definir operaciones sobre dichos objetos&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;que luego se traducirán en la BD a las correspondientes sentencias T-SQL. Empecemos.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;U&gt;Nota:&lt;/U&gt;&lt;/I&gt;&lt;/B&gt; Los requisitos necesarios para probar LINQ To SQL son los que ya comentamos en el &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;FONT face=Calibri size=3&gt;primer post de LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT face=Calibri size=3&gt;Creación del modelo de objetos&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;El modelo de objetos creado se basa en una sencilla base de datos formada por dos tablas relacionadas: Md_Clientes y Md_Vehiculos.&lt;A href="http://geeks.ms/photos/ciin/picture10768.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10768/499x251.aspx" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como hemos comentado, el mapeo de elementos de la BD se basa en definir las clases, propiedades y métodos necesarios para poder interactuar con ellos del mismo modo que con otros tipos del CLR. LINQ To SQL nos da tres posibilidades para realizar este mapeo:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 54pt;TEXT-INDENT:-36pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT face=Calibri size=3&gt;(i)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Utilizando la herramienta &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;SQL Metal&lt;/I&gt;&lt;/B&gt; la cuál a partir del archivo .mdf de nuestra BD genera un archivo .cs con todos los elementos de la BD mapeados.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-fareast-theme-font:minor-fareast;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;Utilizando &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;LINQ To SQL OR Designer&lt;/I&gt;&lt;/B&gt; que es integrado en VS 2005 después de instalar el &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&amp;amp;displaylang=en"&gt;LINQ Preview&lt;/A&gt;. En este caso, el mapeo es todavía más sencillo puesto que sólo tenemos que arrastrar las tablas que nos interesen de nuestro esquema&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;de datos a la superficie de diseño (seguro que esto le suena a más de uno). Si nos vamos a la vista de código (después de grabar :P), veremos que se nos han generado todos los elementos de la BD que hemos situado en la superficie de diseño.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-fareast-theme-font:minor-fareast;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;/SPAN&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10760.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10760/640x454.aspx" border=0&gt;&lt;/A&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10758.aspx" target=_blank&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 54pt;TEXT-INDENT:-36pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo2;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT face=Calibri size=3&gt;(i)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Hacer el mapeo “a mano”, es decir, definir adecuadamente en código las clases y propiedades que representan las tablas y campos a mapear.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;¿Qué método es más adecuado para definir el modelo de objetos?&lt;/I&gt;&lt;/B&gt; Pues básicamente, y desde mi punto de vista, está claro que las opciones (i) e (ii) son más rápidas, pues hacen todo el trabajo por nosotros (aparte de que no se dejan cosas en el tintero) y nos mapean todas las tablas con sus columnas en un archivo .&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;cs&lt;/I&gt;&lt;/B&gt;. Sin embargo, perdemos un poco de flexibilidad puesto que el modelo de objetos se define de acuerdo a la descripción fiel de la BD y no con respecto a necesidades de negocio concretas. En cambio, el método (iii) es más flexible ya que nos permite definir “entidades” de acuerdo al proceso de negocio concreto, de manera que nuestras clases estarán formadas por aquellas propiedades que realmente son interesantes para nosotros (y no por todas las columnas de la correspondiente tabla en la BD). Evidentemente el método (iii) implica más esfuerzo de desarrollo y conocer en mayor detalle como mapear tablas en objetos en LINQ. Nosotros vamos a ir por la opción (iii) para tener un mayor control de lo que estamos haciendo.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Dentro del proyecto de LINQ que hayamos creado, vamos a definir una clase que represente a la entidad Clientes. La definición de esta clase la vamos a basar en la tabla Md_Clientes de nuestro esquema relaciona.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Esta clase es una representación lógica y tipada de la tabla en la BD física, y actúa a todos los efectos como un proxy para realizar consultas fuertemente tipadas.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;[Table(Name="Md_Clientes")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public class Clientes &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;[Column (Id=true, DBType="varchar")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string ID_Cliente;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private string _NombreCliente;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[Column(Storage="_NombreCliente", DBType="varchar")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string NombreCliente&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;get {return this._NombreCliente;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;set {this._NombreCliente=value;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private string _CiudadCliente;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[Column(Storage="_CiudadCliente", DBType="varchar")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string CiudadCliente&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;get {return this._CiudadCliente;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;set {this._CiudadCliente=value;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como vemos en el código anterior, el mapeo de la entidad &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Clientes&lt;/I&gt;&lt;/B&gt; a la tabla &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Md_Clientes&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;se basa en utilizar los atributos adecuados:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;El atributo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Table&lt;/I&gt;&lt;/B&gt; que define cuál es la tabla de la BD con la que se encuentra vinculada la entidad Clientes. Este atributo prese&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;El atributo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Column&lt;/I&gt;&lt;/B&gt; que permite especificar la correspondencia de los miembros de la clase con las correspondientes columnas de la tabla física. Además, este atributo lleva asociados una serie de parámetros que nos permiten especificar si el miembro de la clase se corresponde con la primary key de la tabla de la BD (parámetro &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Id&lt;/I&gt;&lt;/B&gt;), el tipo de dato parámetro (&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DBType&lt;/I&gt;&lt;/B&gt;, si el campo es autogenerado (parámetro &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;autogen&lt;/I&gt;&lt;/B&gt;), etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Una vez que hemos creado la primera entidad del modelo de objetos, nos falta definir el canal que nos permita traer objetos desde la BD y enviar cambios a la BD. Este canal es lo que en LINQ se conoce como &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt;, que se encarga de traducir las peticiones de objetos en consultas SQL (ver el esquema de la arquitectura de LINQ) y devolver los resultados como objetos. El objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt; se puede especificar de dos formas:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Definiendo una instancia del mismo y pasando como parámetro la cadena de conexión de la BD. Este método implica que para definir consultas contra la BD tengamos que utilizar el método GetTable.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;DataContext BD=new DataContext(@"C:\Program Files\LINQ Preview\Data\CLIENTES.mdf");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;Table&amp;lt;Clientes&amp;gt; Customers=BD.GetTable&amp;lt;Clientes&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;U&gt;Nota:&lt;/U&gt;&lt;/B&gt; Como vemos, como cadena de conexión estamos especificando un path físico en el que tenemos almacenada la BD. DataContext admite otras tres sobrecargas (una de ellas es la típica cadena de conexión de ADO.NET) &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;en la definición de la cadena de conexión.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Definiendo el objeto &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt; de modo fuertemente tipado, lo que facilita la definición de las consultas en la BD puesto que no necesitamos utilizar GetTable tras crear una instancia de dicho objeto. Esta es la opción que vamos a utilizar. Para ello, tenemos que crear una clase que herede de &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;class Program&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//BD CLIENTES&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public class CLIENTES: DataContext&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public Table&amp;lt;Clientes&amp;gt; Customers;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public CLIENTES(string connection): base(connection){}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Una vez que hemos definido la primera entidad del modelo y tipado el correspondiente &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt;, ya podemos empezar a realizar consultas contra el modelo de objetos. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT face=Calibri size=3&gt;Realizando consultas contra el modelo de objetos definido&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;La filosofía de la realización de consultas es la que ya vimos cuando se definen &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx"&gt;&lt;FONT face=Calibri size=3&gt;consultas sobre objetos de memoria&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;//Conexión Fuertemente Tipada&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;CLIENTES BD2=new CLIENTES(@"C:\Program Files\LINQ Preview\Data\CLIENTES.mdf");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;//Clientes de Madrid&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;BD2.Log=Console.Out;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;var MisClientes = &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;from c in BD2.Customers&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;where c.CiudadCliente=="Madrid"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;select c;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("*********************Consulta estándar*********************");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach (var cliente in MisClientes)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("ID: {0},Nombre: {1},Ciudad: {2}",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;cliente.ID_Cliente,cliente.NombreCliente,cliente.CiudadCliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;La salida por pantalla que se obtiene nos muestra la sentencia T-SQL que LINQ To SQL envía a la BD (esta sentencia se captura mediante &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;BD2.Log=Console.Out&lt;/I&gt;&lt;/B&gt;) y el resultado de la consulta, que se ejecuta en el momento en que se define la correspondiente iteración.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10761.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10761/640x126.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10344.aspx" target=_blank&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Vamos a definir ahora una consulta más compleja que permita incluir el uso de Joins a partir de que conocemos que Md_Clientes y Md_Vehicles están relacionadas mediante a través del campo ID_Cliente. Antes de realizar la consulta, tendríamos que definir una clase Vehiculos que realice el mapeo correspondiente con la tabla Md_Vehiculos. La filosofía es la misma explicada para la clase Clientes, por lo que no os reproduzco el código. Si nos centramos en la definición de la consulta, supongamos que queremos obtener para cada cliente de la BD la marca de su coche, tendríamos que definir una consulta como la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;var ClientesMarcaCoche= &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;from c in BD2.Customers&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;join ve in BD2.Vehicles on&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;c.ID_Cliente equals ve.ID_Cliente&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;orderby c.CiudadCliente ascending&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;select new{NIF=c.ID_Cliente,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Nombre=c.NombreCliente,Coche=ve.MarcaVehiculo};&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("*********************Consulta con joins*********************");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach(var cliente in ClientesMarcaCoche)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("NIF: {0}, Nombre: {1},Coche: {2} ",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;cliente.NIF,cliente.Nombre,cliente.Coche);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-fareast-theme-font:minor-fareast;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;Aparte del uso del &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;join&lt;/I&gt;&lt;/B&gt;, en la consulta anterior es destacable el uso del operador &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;orderby&lt;/I&gt;&lt;/B&gt; para obtener los resultados ordenados según un cierto criterio y el hecho de que en lugar de devolver un objeto completo como hicimos en la consulta anterior estemos devolviendo una colección arbitraria utilizando para ello un tipo anónimo. La salida que se obtiene por pantalla es la siguiente:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-fareast-theme-font:minor-fareast;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10763.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10763/640x262.aspx" border=0&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Hasta ahora hemos visto como definir un modelo de objetos a partir del esquema de una BD y como realizar consultas contra ese modelo de objetos, consultas que LINQ To SQL traduce a sentencias T-SQL que se envían a la BD. En los siguientes puntos comentaré como realizar operaciones habituales contra una BD: inserción de registros, actualización de datos, borrado de registros y ejecución de sentencias T-SQL (incluidos procedimientos almacenados).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT face=Calibri size=3&gt;Realizando operaciones contra la BD&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Lo primero que vamos a hacer es añadir un registro en la tabla &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Md_Clientes&lt;/I&gt;&lt;/B&gt; de la BD. La clave de creación de registros está en crear una instancia de la entidad &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Clientes&lt;/I&gt;&lt;/B&gt; (con el operador &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;new()&lt;/I&gt;&lt;/B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;)&lt;/I&gt; que mapea la correspondiente tabla de la BD y en el método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Add()&lt;/I&gt;&lt;/B&gt; que nos permite añadir la instancia creada al objeto equivalente del &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt; que a su vez se encargará de generar la correspondiente sentencia SQL de inserción para poder reflejar el registro en la BD. Así, para crear un nuevo cliente en la BD el código necesario es el siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("******************Operando con Entidades******************");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Nuevo registro&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Insercción");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Clientes nuevoCliente= new Clientes();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nuevoCliente.ID_Cliente="72678934C";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nuevoCliente.NombreCliente="Ángel Álvarez";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nuevoCliente.CiudadCliente="Ponferrada";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;//Añadimos el registro&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BD2.Customers.Add(nuevoCliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Forzamos que los datos se vuelquen en la BD&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BD2.SubmitChanges();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Comprobamos que el registro se ha añadido&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var ClienteAñadido=&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(from c in BD2.Customers&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;where c.ID_Cliente=="72678934C"&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;select c).First();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("El cliente con NIF {0}, Nombre {1} ha sido añadido", &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ClienteAñadido.ID_Cliente,ClienteAñadido.NombreCliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Calibri size=3&gt;Como vemos, añadir un nuevo registro es realmente sencillo. Basta con crear una nueva instancia de la entidad &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Clientes&lt;/I&gt;&lt;/B&gt;, completar sus propiedades y añadir la instancia en el &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt; para que los datos se vuelquen en memoria. Además, para que los cambios sean efectivos tenemos que llamar al método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;SubmitChanges()&lt;/I&gt;&lt;/B&gt; que se encarga de iniciar una transacción (por defecto las transacciones en LINQ To SQL son de tipo implicitico para las operaciones de inserción y borrado de datos, la actualización de datos en cambio es automática y no se hace en el contexto de una transacción). Después de llevar los cambios a la BD, comprobamos que estos son efectivos definiendo una consulta en la que filtremos por &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;ID_Cliente&lt;/I&gt;&lt;/B&gt; y a la que le aplicamos el método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;First()&lt;/I&gt;&lt;/B&gt; que retorna un objeto en lugar de una colección de objetos. La salida por pantalla que se obtiene es la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10762.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10762/640x317.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Actualizar o borrar un registro es igualmente sencillo en la BD con LINQ es también bastante sencillo. Para actualizar un registro basta con recuperar el registro o registros a actualizar, cambiar sus propiedades y registrar los cambios en la BD con &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;SubmitChanges()&lt;/I&gt;&lt;/B&gt;. Y para borrar el registro, utilizamos el método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Remove&lt;/I&gt;&lt;/B&gt;() para borrar el registro o registros recuperados desde la BD y que nos interesa eliminar. El código que permite actualizar y borrar el cliente que hemos añadido antes es el siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Actualización del registro&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Actualización");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ClienteAñadido.NombreCliente="Ángel Fernández";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ClienteAñadido.CiudadCliente="La Bañeza";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("El cliente con NIF {0}, ha sido actualizado con los siguientes datos:\n &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Nombre {1} y Ciuad {2}", &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;ClienteAñadido.ID_Cliente, &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ClienteAñadido.NombreCliente, ClienteAñadido.CiudadCliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Borrado de registro&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Borrado");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;BD2.Customers.Remove(ClienteAñadido);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BD2.SubmitChanges();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach(var cliente in BD2.Customers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Console.WriteLine("NIF: {0}, Nombre: {1},Coche: {2} ",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;cliente.ID_Cliente,cliente.NombreCliente,cliente.CiudadCliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Calibri size=3&gt;La salida por pantalla correspondiente es la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10764.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10764/640x317.aspx" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT face=Calibri size=3&gt;Utilizando comandos T-SQL en LINQ To SQL&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Para acabar con este post, os voy a mostrar como LINQ To SQL permite definir y utilizar comandos SQL o procedimientos almacenados (SP’s) en el modelo de entidades definido. Como os podréis imaginar, el uso de estos comandos y/o procedimientos almacenados pasa por definir los correspondientes métodos en la clase que definir nuestro &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt; y decorarlos de manera adecuada.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Lo primero que vamos a hacer es definir estos métodos en la clase comentada. Como veréis en el código, he añadido dos:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;El método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Actualizar&lt;/I&gt;&lt;/B&gt; que nos permitirá actualizar un registro de la BD. Como veis, la clave de este método está en decorarlo con el atributo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Update&lt;/I&gt;&lt;/B&gt; y luego definir en su cuerpo el uso del método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;ExecuteCommand&lt;/I&gt;&lt;/B&gt; (propio de la clase &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt;). Como se ve en el código, este método recibe como argumentos la sentencia T-SQL y los parámetros necesarios para ejecutarla de manera adecuada.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;El método ExtraerClientesVehiculosByCiudad, que devuelve el resultado de ejecutar un cierto SP. La clave de este método está en decorarlo con el atributo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;StoreProcedure&lt;/I&gt;&lt;/B&gt;, en definir adecuadamente el tipo de dato a devolver, y en pasarle adecuadamente los parámetros que se necesiten para ejecutar el SP. Como veis, utilizar SP’s en nuestro modelo de entidades es más complicado que utilizar simples sentencias T-SQL, veamos el código necesario para definir los dos métodos.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Método que ejecuta un comando T-SQL&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[UpdateMethod]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public void Actualizar(Clientes Cliente)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Actualización de datos");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ExecuteCommand("UPDATE [Md_Clientes] set [CiudadCliente]={0} WHERE ID_Cliente={1}",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Cliente.CiudadCliente,Cliente.ID_Cliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Método que ejecuta un SP complejo&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[StoredProcedure (Name="ExtraerClientesVehiculosByCiudad")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public StoredProcedureResult&amp;lt;ClientesVehiculos&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ExtraerClientesVehiculosByCiudad(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[Parameter(Name="CiudadCliente",DBType="NVarChar(50)")] string CiudadCliente)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;return this.ExecuteStoredProcedure&amp;lt;ClientesVehiculos&amp;gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;((MethodInfo)(MethodInfo.GetCurrentMethod())),CiudadCliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como vemos en el código anterior, utilizar un SP es más complejo, por lo que merece la pena explicar un poco más en detalle cómo se define el método:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Decorar el método con el atributo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;StoredProcedure&lt;/I&gt;&lt;/B&gt;, además especificaremos el parámetro &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Name&lt;/I&gt;&lt;/B&gt; en el que indicamos el nombre del SP a ejecutar.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;CREATE PROCEDURE ExtraerClientesVehiculosByCiudad&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;@CiudadCliente NVARCHAR(50)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;select C.ID_Cliente, C.CiudadCliente, V.MarcaVehiculo &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;from Md_Clientes C&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;left join Md_Vehiculos V on&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;C.ID_Cliente=V.ID_Cliente&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;where CiudadCliente=@CiudadCliente&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;order by C.CiudadCliente&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;En la declaración del método, vemos que es de un tipo especial: &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;StoredProcedureResult&amp;lt;T&amp;gt;&lt;/I&gt;&lt;/B&gt;, que hereda de las clases &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;IEnumerable&amp;lt;T&amp;gt; &lt;/I&gt;&lt;/B&gt;y &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;StoredProcedureResult&lt;/I&gt;&lt;/B&gt;.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Por lo tanto, implementa una interfaz de tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;IEnumerable&lt;/I&gt;&lt;/B&gt; y necesitaremos definir la correspondiente clase que nos de la descripción de la colección. Lógicamente, la clase que implementemos se tendrá que corresponder con lo que esperamos que nos devuelva el SP.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;public class ClientesVehiculos&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private string _ID_Cliente;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string ID_Cliente&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;get {return this._ID_Cliente;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;set {this._ID_Cliente=value;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private string _CiudadCliente;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string CiudadCliente&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;get {return this._CiudadCliente;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;set {this._CiudadCliente=value;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;private string _MarcaVehiculo;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string MarcaVehiculo&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;get {return this._MarcaVehiculo;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;set {this._MarcaVehiculo=value;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Cómo parámetros del método, definiremos justamente los parámetros que espera el SP y decorándolos adecuadamente para que sean del tipo que esperado. En nuestro caso, el SP necesita un único parámetro, @CiudadCliente, por lo que en código lo especificamos mediante el parámetro CiudadCliente convenientemente decorado con el atriburo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;parameter&lt;/I&gt;&lt;/B&gt;:&amp;nbsp;&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;FONT face=Calibri&gt;&lt;STRONG&gt;&lt;EM&gt;( [Parameter(Name="CiudadCliente",DBType="NVarChar(50)")] string CiudadCliente)&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Lo siguiente que hacemos es ejecutar el procedimiento y devolver el resultado de la ejecución. Para ello llamamos al método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;ExecuteStoredProcedure&lt;/I&gt;&lt;/B&gt; de la clase &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;DataContext&lt;/I&gt;&lt;/B&gt;, el cuál recibe como parámetros un tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;MethodInfo&lt;/I&gt;&lt;/B&gt; y el parámetro o parámetros que necesita el SP para ser ejecutado correctamente.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;U&gt;Nota:&lt;/U&gt;&lt;/I&gt;&lt;/B&gt;&lt;U&gt; &lt;/U&gt;Por supuesto, se pueden definir métodos que ejecuten un procedimiento almacenado y devuelvan tipos simples (como un entero) o tipos más complejos en los que a priori no sepamos el formato (en cuanto a número de columnas) que nos devuelva el SP (en este caso se utiliza un tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;shape&lt;/I&gt;&lt;/B&gt;).&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Una vez que hemos definido los métodos necesarios para habilitar el uso de sentencias T-SQL y SP’s en nuestro código, utilizarlos es sencillo. El código necesario para utilizar los métodos anteriores es el siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("****************Uso de Comandos T-SQL****************");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Sentencia T-SQL");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;var ClienteExistente=&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;(from c in BD2.Customers&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;where c.ID_Cliente=="71505286B"&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;select c).First();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Datos antes de actualizar ID={0},Ciudad={1}",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ClienteExistente.ID_Cliente,ClienteExistente.CiudadCliente);&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ClienteExistente.CiudadCliente="Oviedo";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BD2.Actualizar(ClienteExistente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Datos después de actualizar ID={0},Ciudad={1}",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ClienteExistente.ID_Cliente,ClienteExistente.CiudadCliente);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("\n");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("****************Procedimiento almacenado****************");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;StoredProcedureResult&amp;lt;ClientesVehiculos&amp;gt; resultados =&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BD2.ExtraerClientesVehiculosByCiudad("Madrid");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach(ClientesVehiculos resultado in resultados)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("ID Cliente: {0},Ciudad Cliente: {1},Marca Vehiculo: &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{2}",resultado.ID_Cliente,resultado.CiudadCliente,resultado.MarcaVehiculo);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-fareast-theme-font:minor-fareast;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;La salida por pantalla para este caso es la siguiente:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-fareast-theme-font:minor-fareast;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10765.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10765/640x317.aspx" border=0&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-fareast-language:ES;mso-fareast-theme-font:minor-fareast;mso-ansi-language:ES;mso-bidi-language:AR-SA;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:11.0pt;"&gt;Y hasta aquí (que no es poco), lo que os quería contar sobre LINQ To SQL. Espero vuestros comentarios y que os hayan resultado interesantes los aspectos cubiertos en el post. Os dejo para que os podáis descargar y probar el &lt;A class="" href="http://geeks.ms/files/folders/ciin/default.aspx" target=_blank&gt;código del proyecto&lt;/A&gt; con todas las funcionalidades de LINQ To SQL y el script de creación de la BD (tablas, datos y procedimientos almacenados incluidos)&amp;nbsp;que he usado para las pruebas. Os animo a que probéis LINQ , a mi me ha impresionado bastante y resulta muy natural utilizarlo si estás familiarizado con T-SQL. En otro post os contaré de que va LINQ To XML.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=10770" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Comenzando con LINQ: Bases y Consulta de Datos en Memoria!</title><link>http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx</link><pubDate>Tue, 13 Feb 2007 11:25:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:10351</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ciin/rsscomments.aspx?PostID=10351</wfw:commentRss><comments>http://geeks.ms/blogs/ciin/archive/2007/02/13/comenzando-con-linq-bases-y-consulta-de-datos-en-memoria.aspx#comments</comments><description>&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como os comentaba en un &lt;/FONT&gt;&lt;A href="http://geeks.ms/blogs/ciin/archive/2007/02/05/comenzando-con-wf-paso-de-datos-y-runtime-services.aspx"&gt;&lt;FONT face=Calibri size=3&gt;post previo&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, uno de los cometidos como integrantes de un &lt;/FONT&gt;&lt;A href="http://www.ciin.es/"&gt;&lt;FONT face=Calibri size=3&gt;centro de innovación de Microsoft&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; es estar al día de las últimas novedades en las que Microsoft está trabajando, conocer en detalle dichas novedades, cacharrear con ellas, etc, siempre teniendo en mente que resulta realmente complicado seguir el ritmo de creación de Microsoft. Por este motivo, nos planteamos mes a mes que tecnologías sería interesante conocer para transmitir el conocimiento a las empresas de Cantabria y ponerlas en la parrilla de salida hacía las futuras tendencias tecnológicas. Pues bien, una de las últimas tecnologías que hemos estado probando es &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, y francamente estoy sorprendido tanto por sus características (construida sobre las innovaciones de lenguaje de C# y VB 9.0) como por sus prestaciones: habilitar el uso de consultas a objetos de memoria, orígenes de datos, XML o cualquier otro “ente” que se nos ocurra (a partir de la capacidad de extensibilidad de LINQ).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Para los nuevos en la materia, LINQ o &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Language Integrated Query&lt;/I&gt;&lt;/B&gt; es un framework de consultas que habilita el uso de órdenes tipo SQL integradas en el lenguaje de programación a partir de una serie de operadores estándar de consulta que permiten realizar consultas sobre cualquier colección de tipo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/I&gt;&lt;/B&gt;. La arquitectura de LINQ es la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10347.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10347/640x379.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;¿Qué proporciona LINQ?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Antes de entrar en materia, no está de más tener claro que ventajas o características nos da LINQ. Destacaría las siguientes:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Un &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;framework&lt;/I&gt;&lt;/B&gt; unificado de acceso a objetos, datos y XML. Y que además es completamente extensible.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Consultas tipo SQL en código C# y VB: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Sintaxis potente, similar a T-SQL.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;La curva de aprendizaje es reducida.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Comprobación de tipos e intellisense.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Modelo de proveedores extensible, ya se han definido extensiones hacia SQL (LINQ To SQL) y XML (LINQ to XML).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Una serie de &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/StandardQuery.mspx"&gt;&lt;FONT face=Calibri size=3&gt;operadores estándar de consulta out-of-the-box&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, que permiten definir operaciones de recorrido, filtro y proyección de modo declarativo en el lenguaje.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;¿Se os ocurren más?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Bueno, después de esta pequeña introducción a LINQ (para más información, os recomiendo que vayáis al &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;sitio oficial del proyecto LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;), es hora de pasar a la acción. También es recomendable la información y ejemplos que en el sitio de &lt;/FONT&gt;&lt;A href="http://www.elguille.info/NET/futuro/puntonetbeta3.htm"&gt;&lt;FONT face=Calibri size=3&gt;El Guille&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; han colgado tanto Guillermo Som como Octavio Hernández &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;En este post comentaré algunas de las innovaciones del lenguaje (para C#) conocidas, así como el modo de definir consultas integradas en el lenguaje contra un objeto de memoria.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;C# 3.0: Innovaciones en el lenguaje&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como comentábamos, LINQ se basa en muchas de las innovaciones del lenguaje que viene con &lt;/FONT&gt;&lt;A href="http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/languageenhancements.wmv"&gt;&lt;FONT face=Calibri size=3&gt;C# 3.0&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; y &lt;/FONT&gt;&lt;A href="http://channel9.msdn.com/showpost.aspx?postid=116700"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;VB 9.0&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;. Antes de empezar con las innovaciones, seguro que alguno os está preguntando que se necesita para poder probarlas:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Evidentemente, Visual Studio 2005 (No necesitáis bajaros la última CTP de Orcas).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;LINQ Preview para VB y C# de Mayo de 2006 (no he encontrado una versión posterior para poder utilizarla con VS 2005, pero para el propósito de este post es suficiente), que os podéis descargar en &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&amp;amp;displaylang=en"&gt;&lt;FONT face=Calibri size=3&gt;este enlace&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;. Al instalar esta Preview, veréis que además de las correspondientes plantillas de proyecto, se instalarán un montón de ejemplos y HandOn labs tanto para VB como C#.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Una vez instalada la preview, si os vais a VS 2005 veréis que aparece una nueva entrada en los tipos de proyectos: &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;LINQ Preview&lt;/I&gt;&lt;/B&gt; con las correspondientes plantillas añadidas.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10349.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10349/640x433.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Tras pulsar OK, nos saldrá un mensaje advirtiéndonos que este tipo de proyecto se refiere a una versión no soportada de C# 3.0 y que ciertas funcionalidades podrían no funcionar de manera correcta. Corremos el riesgo, y ya estamos listos para empezar a ver las innovaciones en el lenguaje, las cuales están disponibles (no tenéis más que examinar las referencias que se añaden al proyecto)&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;a través de los siguientes espacios de nombres:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;using System.Query;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;using System.Xml.XLinq;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;using System.Data.DLinq;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;using System.Expressions;&lt;/I&gt;&lt;/B&gt; (está la tenemos que añadir para poder crear árboles de expresión como luego veremos).&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Entre estas innovaciones son destacables las siguientes&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Declaración implícita de tipos&lt;/I&gt;&lt;/B&gt;, lo que implica que cuando declaramos un objeto no es necesario que especifiquemos su tipo, sino que el compilador es capaz de inferirlo de manera dinámica en tiempo de compilación a partir del valor estático asignado. La clave de la declaración de tipos implícitos está en el uso de la palabra reservada &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;var&lt;/I&gt;&lt;/B&gt;. En la práctica, esta innovación facilita poder referenciar en nuestro código instancias de tipos anónimos. Veamos un ejemplo de declaración implícita de tipos.&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Declaración ímplicita de tipos&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var numero=2;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var cadena="Hola mundo desde LINQ!";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("numero es de tipo " + numero.GetType() &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;+ ".El valor de numero es " + numero);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("cadena es de tipo " + cadena.GetType() &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;+ ".El valor de cadena es " + cadena);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Calibri size=3&gt;La salida por pantalla que obtendríamos para este caso es:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10340.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10340/640x107.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;La ventaja que nos aporta esta innovación es que libera al desarrollador de tener que definir de manera explícita los tipos que necesite&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;al programar una aplicación. Esta característica es clave para LINQ, &lt;I style="mso-bidi-font-style:normal;"&gt;puesto que el desarrollador no necesita definir los tipos que va a devolver una consulta, sino que es el compilador quien dinámicamente va a realizar esta tarea&lt;/I&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Tipos anónimos&lt;/I&gt;&lt;/B&gt;, esta característica permite crear objetos de tipo anónimo, es decir, de nuevo podemos omitir el tipo cuando instanciamos un objeto y este es construido de manera dinámica en tiempo de compilación. Además de poder definir un objeto de manera anónima, es posible definir propiedades asociadas al mismo. Un ejemplo de esta innovación es el siguiente:&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var Santander=new {NombreCiudad="Santander", PoblacionCiudad=180000};&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("La ciudad de " + Santander.NombreCiudad + " tiene una población de " + &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Santander.PoblacionCiudad + " habitantes");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Santander es de tipo " + Santander.GetType());&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Calibri size=3&gt;En este caso, la salida por pantalla es la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10341.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10341/640x83.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;Como vemos, aunque hemos declarado un tipo anónimo, el compilador es capaz de inferir el tipo correspondiente y sacar por pantalla los valores de sus propiedades. También vemos que el tipo devuelto es &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&amp;lt;Projection&amp;gt;f __0&lt;/I&gt;&lt;/B&gt; que es el que se infiere en tiempo de compilación.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Si miramos el ensamblado a través de la &lt;/FONT&gt;&lt;A href="http://www.aisto.com/roeder/dotnet/"&gt;&lt;FONT size=3&gt;utilidad reflector&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, tendremos más información respecto al tipo generado en tiempo de compilación.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10342.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10342/368x480.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Inicializadores de objetos&lt;/I&gt;&lt;/B&gt;, esta innovación ya la vimos en la anterior. Lo que permite es inicializar objetos (anónimos o no) en el momento en que los instanciamos.&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;public class Ciudad&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string NombreCiudad;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public int PoblacionCiudad;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;static void Main(string[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Var Santander=new Ciudad{NombreCiudad="Santander", &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;PoblacionCiudad=180000};&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("La ciudad de " + Santander.NombreCiudad + &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;" tiene una población de " + &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Santander.PoblacionCiudad + " habitantes");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Santander es de tipo " + Santander.GetType());&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10343.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10343/640x85.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Calibri size=3&gt;En este caso, en el código estamos combinando la declaración implícita de tipos y la inicialización de objetos. Por lo que ahora, el tipo devuelto es &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Ciudad&lt;/I&gt;&lt;/B&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Métodos de extensión&lt;/I&gt;&lt;/B&gt;, o dicho de otra forma: mecanismos que habilitan la extensión de objetos. La base de esta innovación consiste en crear clases de extensión que nos permitan extender la funcionalidad de tipos existentes a partir de crear nuevos métodos. Los métodos de extensión son métodos estáticos que son&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;habilitados como métodos de extensión a través de la palabra reservada &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;this&lt;/I&gt;&lt;/B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;.&lt;/I&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 36pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;static class ExtensionDeTipos&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public static string Saludar(this string nombre)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;return ("Hola " + nombre + "!");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;static void Main(string[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;string nombre = "Mundo";&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine(nombre.Saludar());&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-INDENT:-0.55pt;TEXT-ALIGN:justify;mso-add-space:auto;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-ansi-language:ES;mso-fareast-language:ES;mso-bidi-language:AR-SA;mso-fareast-theme-font:minor-fareast;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;Mediante el código anterior, hemos definido una clase estática dentro de la cuál definiremos nuestros métodos de extensión. En este caso, estamos extendiendo &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;nombre&lt;/I&gt;&lt;/B&gt; que es de tipo cadena mediante el método &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Saludar&lt;/I&gt;&lt;/B&gt; y como vemos la clave de esta extensibilidad es la palabra reservada &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;this.&lt;/I&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-bidi-font-size:10.0pt;mso-ansi-language:ES;mso-fareast-language:ES;mso-bidi-language:AR-SA;mso-fareast-theme-font:minor-fareast;mso-bidi-theme-font:minor-bidi;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;"&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10344.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10344/640x70.aspx" border=0&gt;&lt;/A&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Una característica interesante de los métodos de extensión es que se pueden añadir a cualquier tipo, incluyendo tipos genéricos como &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;List &amp;lt;T&amp;gt;&lt;/I&gt;&lt;/B&gt; y &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Dictionary &amp;lt;T&amp;gt;&lt;/I&gt;&lt;/B&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Expresiones lambda&lt;/I&gt;&lt;/B&gt;, que habilitan el uso de condiciones sin tener que especificar el tipo. En la práctica, las expresiones lambda permiten definir de un modo más claro y directo los métodos anónimos de C # 2.0 (quizás esta es una de las innovaciones más destacadas de C# 3.0 y una de las bases de LINQ junto con los métodos de extensión). Para entender esta innovación, no está de más recordar que es un método anónimo en C# 2.0:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;MARGIN:auto auto auto 33.75pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#d9d9d9;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:402.25pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;List &amp;lt;string&amp;gt; NombresLongitudMayor5=nombres.FindAll(delegate(string s)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;{return(s.Length)&amp;gt;=5;});&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 35.4pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Pues bien, la expresión anterior se puede escribir de manera más directa en C# 3.0 utilizando una expresión lambda, que unida a otras innovaciones simplifica mucho el código anterior&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;MARGIN:auto auto auto 35.4pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;BACKGROUND:#d9d9d9;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;var NombresLongitudMayor5=nombres.FindAll(s =&amp;gt; s.Length&amp;gt;=5);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 35.4pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 35.4pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Como vemos, una expression lamba consta de tres elementos:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Un parámetro de lista (s), que puede ser tipado de manera explícita o implícita. En el ejemplo, de nuevo estamos utilizando tipado implícito.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;El &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;token&lt;/I&gt;&lt;/B&gt; =&amp;gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 72pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;SPAN style="FONT-FAMILY:'Courier New';mso-fareast-font-family:'Courier New';"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;o&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;La expresión a aplicar (la longitud sea 10).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 35.4pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Un ejemplo completo de uso de expresiones lambda sería el siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 35.4pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;var nombres=new List&amp;lt;string&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;nombres.Add("Luis");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nombres.Add("Juan Carlos");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nombres.Add("Pepe");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;nombres.Add("Ramón");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var NombresLongitudMayor5=nombres.FindAll(s =&amp;gt; s.Length&amp;gt;=5);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach(string nombre in NombresLongitudMayor5)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine(nombre);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 35.4pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Árboles de expresión&lt;/I&gt;&lt;/B&gt;, que son representaciones más eficientes en memoria de una expresión lambda. La idea de los árboles de expresión es dar una visión más transparente e implícita que el código IL, además de habilitar la utilización de expresiones lambda como datos en tiempo de ejecución. La clave de la definición de árboles de expresión está en un nuevo tipo: &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;Expression &amp;lt;T&amp;gt;&lt;/I&gt;&lt;/B&gt;. Veamos un ejemplo:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 35.4pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:400.6pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Expression&amp;lt;Func&amp;lt;string,bool&amp;gt;&amp;gt; NombresLongitudMayor5= s =&amp;gt; s.Length&amp;gt;=5;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;Console.WriteLine(NombresLongitudMayor5);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;Código que produce la siguiente salida:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10345.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10345/640x60.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Calibri size=3&gt;Como vemos, el árbol de expresión nos permite traducir la expresión lambda a datos que son manipulables. Pero, ¿Para qué nos sirven los árboles de expresión? Pues, y como se comenta en la &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;&lt;FONT face=Calibri size=3&gt;documentación disponible del proyecto LINQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, para una implementación de acceso a base de datos, nos permitiría traducir los árboles a sentencias apropiadas para un tipo particular de BD. De hecho, esto es lo que se hace en LINQ to SQL (anteriormente DLinq), en el que los árboles de expresión son traducidos a sentencias T-SQL que puedan ser evaluadas en la BD.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;LINQ to Objetcs: Consultas a objetos de memoria&lt;/I&gt;&lt;/B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Después de haber introducido algunas de las novedades del lenguaje que vendrán con C# 3.0 y de modo equivalente con VB y sobre las que se apoya LINQ, ya es hora de ver las posibilidades de LINQ en la práctica. Básicamente, LINQ utiliza estas innovaciones para definir habilitar el uso de consultas integradas en el lenguaje de programación. Para ello define una serie de operadores estándares de consulta que son métodos de extensión definidos sobre &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;IEnumerable &amp;lt;T&amp;gt;&lt;/I&gt;&lt;/B&gt;, y cuyas características más relevantes son las siguientes:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Están construidos a partir de las innovaciones en el lenguaje vistas.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Permiten trabajar con datos en memoria. Esto es especialmente interesante para cuando trabajemos contra datos de una BD, de un archivo XML o cualquier otro origen de datos.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Las operaciones siempre se realizan en memoria.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Aquí os dejo el listado de los operadores estándar de consulta. Para conocer en detalle dichos operadores, os recomiendo la lectura de la traducción por Octavio Hernández del documento The LINQ Proyect. Este documento junto con otros también traducidos al castellano lo podéis encontrar &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/spanish/msdn/articulos/architec/fecha/2007.mspx"&gt;&lt;FONT face=Calibri size=3&gt;aquí&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV align=center&gt;
&lt;TABLE class=MsoTableColorfulListAccent2 style="WIDTH:400.6pt;BORDER-COLLAPSE:collapse;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" cellSpacing=0 cellPadding=0 class="MsoTableColorfulListAccent2"&gt;

&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#9e3a38;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:white 1.5pt solid;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themeshade:204;mso-border-bottom-themecolor:background1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:5;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:white;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:background1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Tipo de Operador&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#9e3a38;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:white 1.5pt solid;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themeshade:204;mso-border-bottom-themecolor:background1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:white;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:background1;"&gt;Operador &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:white;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:background1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:0;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Restricción &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;Where &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:21.9pt;mso-yfti-irow:1;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:21.9pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Proyección &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:21.9pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;Select, SelectMany &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:2;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Ordenación &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;OrderBy, ThenBy &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:3;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Agrupamiento &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;GroupBy, Reverse, GroupJoin &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:4;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Cuantificadores &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;Any, All &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:5;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Particionado &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;Take, Skip, TakeWhile, SkipWhile &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:6;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Conjuntos &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;Distinct, Union, Intersect, Except &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:7;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Elementos &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;First, FirstOrDefault, ElementAt &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:8;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Agregación &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="COLOR:black;LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;mso-themecolor:text1;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Aggregate,Count, Sum, Min, Max, Average &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:9;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Conversión &lt;SPAN style="COLOR:black;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;ToArray, ToList, ToDictionary &lt;SPAN style="COLOR:black;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:10;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:68;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Casting &lt;SPAN style="COLOR:black;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f2dbdb;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:51;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:64;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;OfType&amp;lt;T&amp;gt; &lt;SPAN style="COLOR:black;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:28.75pt;mso-yfti-irow:11;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:134.9pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;mso-yfti-cnfc:4;"&gt;&lt;B&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Join &lt;SPAN style="COLOR:black;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT:#f0f0f0;PADDING-RIGHT:5.4pt;BORDER-TOP:#f0f0f0;PADDING-LEFT:5.4pt;BACKGROUND:#f8eded;PADDING-BOTTOM:0cm;BORDER-LEFT:#f0f0f0;WIDTH:265.7pt;PADDING-TOP:0cm;BORDER-BOTTOM:#f0f0f0;HEIGHT:28.75pt;mso-background-themecolor:accent2;mso-background-themetint:25;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;LINE-HEIGHT:115%;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Join, GroupJoin, On&lt;SPAN style="COLOR:black;mso-themecolor:text1;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Además del uso de los operadores estándar de consultas, LINQ utiliza otra innovación conocida como la &lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa479865.aspx"&gt;evaluación diferida de consultas&lt;/A&gt;&lt;/I&gt;&lt;/B&gt;, que implica que una consulta no es realmente evaluada hasta el momento en que se itera con ella. La ventaja de esta técnica es que las consultas van a poder ser evaluadas múltiples veces.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;Sin más, vamos a ver un ejemplo de LINQ contra objetos. El código sería el siguiente:&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT:medium none;BORDER-TOP:medium none;BACKGROUND:#d9d9d9;MARGIN:auto auto auto 18pt;BORDER-LEFT:medium none;BORDER-BOTTOM:medium none;BORDER-COLLAPSE:collapse;mso-background-themecolor:background1;mso-background-themeshade:217;mso-border-alt:solid black .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-themecolor:text1;" cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;"&gt;
&lt;TD class="" style="BORDER-RIGHT:black 1pt solid;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;PADDING-LEFT:5.4pt;PADDING-BOTTOM:0cm;BORDER-LEFT:black 1pt solid;WIDTH:432.2pt;PADDING-TOP:0cm;BORDER-BOTTOM:black 1pt solid;BACKGROUND-COLOR:transparent;mso-border-alt:solid black .5pt;mso-border-themecolor:text1;"&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Clase a partir de la cuál definiremos el objeto en memoria a consultar&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;public class Ciudad&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public string NombreCiudad;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;public int PoblacionCiudad;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;static void Main(string[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Objeto en memoria sobre el que vamos a habiltiar la consulta&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var ciudades=new List&amp;lt;Ciudad&amp;gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{NombreCiudad="Santander",PoblacionCiudad=180000},&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{NombreCiudad="León",PoblacionCiudad=150000},&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{NombreCiudad="Ponferrada",PoblacionCiudad=75000},&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{NombreCiudad="Madrid",PoblacionCiudad=4000000}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Consulta...&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var consulta=&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;from c in ciudades&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;where c.PoblacionCiudad&amp;gt;150000&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;select new {c.NombreCiudad,c.PoblacionCiudad};&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Ciudades con más de 150000 habitantes: ");&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//Aquí es dónde realmente se evalua la consulta...&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;foreach(var c in consulta)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine("Ciudad: {0}, Población {1}",&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;c.NombreCiudad,c.PoblacionCiudad);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 0pt;TEXT-ALIGN:justify;"&gt;&lt;SPAN style="mso-fareast-font-family:Calibri;mso-bidi-font-size:11.0pt;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;FONT face=Calibri size=3&gt;En el código anterior hemos utilizado varias de las innovaciones vistas,&lt;B style="mso-bidi-font-weight:normal;"&gt;&lt;I style="mso-bidi-font-style:normal;"&gt; a ver quién me las dice&lt;/I&gt;&lt;/B&gt; a partir de leer el post (así podré medir si me explico bien o no :P). La salida por pantalla sería la siguiente:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY:inter-ideograph;MARGIN:0cm 0cm 10pt 18pt;TEXT-ALIGN:justify;"&gt;&lt;A href="http://geeks.ms/photos/ciin/picture10346.aspx" target=_blank&gt;&lt;IMG src="http://geeks.ms/photos/ciin/images/10346/640x79.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Bueno, pues hasta aquí el primer post que desde el CIIN hacemos de LINQ. Espero vuestros comentarios y respuestas a la dudilla planteada.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=10351" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/LINQ/default.aspx">LINQ</category></item></channel></rss>