<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Sanjeetosphere : C# 3.0</title><link>http://blogs.msdn.com/sanjeets/archive/tags/C_2300_+3.0/default.aspx</link><description>Tags: C# 3.0</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How To: Use SqlMetal.exe to Create a Class from XML and Database</title><link>http://blogs.msdn.com/sanjeets/archive/2007/06/07/how-to-use-sqlmetal-exe-to-create-a-class-from-xml-and-database.aspx</link><pubDate>Thu, 07 Jun 2007 11:23:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3136020</guid><dc:creator>Sanjeet</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/sanjeets/comments/3136020.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjeets/commentrss.aspx?PostID=3136020</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanjeets/rsscomments.aspx?PostID=3136020</wfw:comment><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;If you don't have&amp;nbsp;&lt;a href="http://msdn.microsoft.com/vstudio/express/future/visualcsharp/default.aspx"&gt;Visual C# Codename Orcas Express Edition&lt;/a&gt; installed on your development machine, and you are using Visual Studio 2005 with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1E902C21-340C-4D13-9F04-70EB5E3DCEEA&amp;amp;displaylang=en"&gt;LINQ 2006 CTP&lt;/a&gt;, then SqlMetal.exe is something that you must lookout for.  &lt;p&gt;It is the O/R mapper that you must use to create a strongly typed class, and use it with DLinq.  &lt;p&gt;You can find SqlMetal.exe at: &lt;em&gt;&lt;font color="#008000"&gt;%systemdrive%\Program Files\LINQ Preview\Bin&lt;/font&gt;&lt;/em&gt; folder.  &lt;p&gt;Its used as following:  &lt;div&gt;&lt;pre class="csharpcode"&gt;usage: sqlmetal [options] [&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;file&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;]
options:
  /server:&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;     database server name
  /database:&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;   database catalog on server
  /user:&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;       login user id
  /password:&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;   login password
  /views             extract database views
  /functions         extract database functions
  /sprocs            extract stored procedures
  /xml[:file]        output as xml
  /code[:file]       output as source code
  /map[:file]        generate xml mapping file instead of attributes
  /language:xxx      language for source code (vb,csharp)
  /namespace:&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;  namespace used for source code
  /pluralize         auto-pluralize table names
  /dataAttributes    auto-generate DataObjectField and Precision attributes
  /timeout:&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;seconds&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; timeout value in seconds to use for database commands

examples:
To generate an XML file with extracted SQL metadata
  sqlmetal /server:myserver /database:northwind /xml:mymeta.xml

To generate an XML file with extracted SQL metadata from an .mdf file
  sqlmetal /xml:mymeta.xml mydbfile.mdf

To generate source code from an XML metadata file
  sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.xml

To generate source code from SQL metadata directly
  sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp

&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;To create an XML file from a database like Northwind, I copied the .mdf as suggested by the above help and pasted it to the same folder. I used the following command:&lt;br&gt;&lt;em&gt;&lt;font color="#008000"&gt;sqlmetal /xml:northwind.xml Northwind.mdf&lt;/font&gt;&lt;/em&gt;&lt;br&gt;but it failed with: 
&lt;div&gt;&lt;pre class="csharpcode"&gt;Unhandled Exception: System.Data.SqlClient.SqlException: An error has occurred while establishing a
connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fac
t that under the default settings SQL Server does not allow remote connections. (provider: SQL Netwo
rk Interfaces, error: 26 - Error Locating Server/Instance Specified)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConne
ction)&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div&gt;I thought its asking for the server name, so I tried this:&lt;br&gt;&lt;em&gt;&lt;font color="#008000"&gt;sqlmetal /xml:northwind.xml /server:myserver Northwind.mdf&lt;/font&gt;&lt;/em&gt;&lt;br&gt;it also failed with the following error: &lt;/div&gt;
&lt;div&gt;&lt;pre class="csharpcode"&gt;Unhandled Exception: System.Data.SqlClient.SqlException: An attempt to attach an auto-named database
 for file Northwind.mdf failed. A database with the same name exists, or specified file cannot be op
ened, or it is located on UNC share.
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConne
ction)&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;The command that worked is following:&lt;br&gt;&lt;font color="#008000"&gt;&lt;em&gt;sqlmetal /server:myserver /database:Northwind /xml:northwind.xml&lt;/em&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Then I thought of creating a class out of the generated XML. I used the following command and it worked the first time:&lt;br&gt;&lt;em&gt;&lt;font color="#008000"&gt;sqlmetal /code:Northwind.cs /language:csharp Northwind.xml&lt;/font&gt;&lt;/em&gt; 
&lt;p&gt;Creating a class file directly from the database is pretty starightforward, I used the following command:&lt;br&gt;&lt;em&gt;&lt;font color="#008000"&gt;sqlmetal /server:myserver /database:Northwind /code:Northwind.cs /language:csharp&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;C# IDE Support for Visual Studio 2005/C# 2005 Express&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While this preliminary IDE support greatly enhances the editing experience when writing C# 3.0 code in VS 2005, the language service and compiler are still very much in an alpha phase. In the event of a compiler error, many more errors may be reported than are actually present. If you see a large number of errors when building C# 3.0 code, fix the top error in the error list first and build after each fix. 
&lt;p&gt;&lt;u&gt;&lt;em&gt;Follow these steps to enable LINQ IDE support for Visual Studio 2005 and Visual C# 2005 Express:&lt;/em&gt; &lt;/u&gt;
&lt;p&gt;First, verify that you are running the release version of Visual Studio 2005 or Visual C# 2005 Express. The language service that will be installed only works with the English version of VS 2005/C# 2005 Express and may cause severe problems if installed on earlier versions. You can verify your version by selecting Help\About in Visual Studio 2005. &lt;br&gt;Shut down any running instances of Visual Studio. &lt;br&gt;Open the \bin folder under the LINQ preview installation directory and run &lt;em&gt;&lt;font color="#008000"&gt;“Install C# IDE Support”&lt;/font&gt;&lt;/em&gt;. &lt;br&gt;Start VS 2005/C# 2005 Express. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;u&gt;Follow these steps to restore your original VS 2005/C# 2005 Express language service: &lt;/u&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Shut down any running instances of Visual Studio. &lt;br&gt;Open the \bin folder under the LINQ preview installation directory and run &lt;em&gt;&lt;font color="#008000"&gt;“Uninstall C# IDE Support”&lt;/font&gt;&lt;/em&gt;. &lt;br&gt;Start VS 2005/C# 2005 Express. 
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3136020" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjeets/archive/tags/C_2300_+3.0/default.aspx">C# 3.0</category><category domain="http://blogs.msdn.com/sanjeets/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>How To: Seemlessly Export Data From Database to XML using LINQ</title><link>http://blogs.msdn.com/sanjeets/archive/2007/06/06/how-to-seemlessly-export-data-from-database-to-xml-using-linq.aspx</link><pubDate>Wed, 06 Jun 2007 14:47:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3115449</guid><dc:creator>Sanjeet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjeets/comments/3115449.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjeets/commentrss.aspx?PostID=3115449</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanjeets/rsscomments.aspx?PostID=3115449</wfw:comment><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;While exploring a number of neat features available in the Visual C# Orcas Express Edition, you will see the following:&lt;/p&gt; &lt;p&gt;There is no namespace like DLinq, or XLinq anymore, they are replace with more meaningful&lt;br&gt;System.Data.Linq and&lt;br&gt;System.Xml.Linq &lt;/p&gt; &lt;p&gt;However, the latter appears by default in a console application, System.Data.Linq will be added to the references once the O/R mapper a.k.a .dbml file is added. In the express Edition, you can connect to a .mdf, .mdb, or a .sdf(Sql Server Compact Edition) databases.  &lt;p&gt;After instantiating the DataContext class, you will be able to explore its rich features supported with Intellisence.  &lt;p&gt;Apart from that the XML.Linq namespace has got some neat and intuitive features. My favorite is:&lt;br&gt;&lt;em&gt;System.Xml.Linq.XElement xlinq = new XElement(XName name, object content); &lt;/em&gt; &lt;p&gt;As you would expect from it, any object returning values compatible to IEnumerable is taken care of by the constructor... all by itself.&lt;/p&gt; &lt;div class="csharpcode-wrapper" style="width: 70.19%; height: 210px"&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml.Linq;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            NorthwindDataContext north = &lt;span class="kwrd"&gt;new&lt;/span&gt; NorthwindDataContext();&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;//sample query, not related to this demo!!&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            var products = from p &lt;span class="kwrd"&gt;in&lt;/span&gt; north.Products&lt;/pre&gt;&lt;pre&gt;                           &lt;span class="kwrd"&gt;where&lt;/span&gt; p.ProductID &amp;gt; 10 &amp;amp;&amp;amp; p.ProductID &amp;lt; 200&lt;/pre&gt;&lt;pre class="alt"&gt;                           select &lt;span class="kwrd"&gt;new&lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;                                      p.ProductName,&lt;/pre&gt;&lt;pre class="alt"&gt;                                      p.UnitPrice&lt;/pre&gt;&lt;pre&gt;                                  };&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;//the actual thing!!!&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            System.Xml.Linq.XElement xlinq = &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Products"&lt;/span&gt;,&lt;/pre&gt;&lt;pre class="alt"&gt;                                             from p &lt;span class="kwrd"&gt;in&lt;/span&gt; north.Products&lt;/pre&gt;&lt;pre&gt;                                             &lt;span class="kwrd"&gt;where&lt;/span&gt; p.ProductName.StartsWith(&lt;span class="str"&gt;"S"&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;                                             select &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"Product"&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"UnitPrice"&lt;/span&gt;, p.UnitPrice),&lt;/pre&gt;&lt;pre&gt;                                                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;"QuantityPerUnit"&lt;/span&gt;, p.QuantityPerUnit), &lt;/pre&gt;&lt;pre class="alt"&gt;                                                        &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"ProductName"&lt;/span&gt;, p.ProductName),&lt;/pre&gt;&lt;pre&gt;                                                    &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(&lt;span class="str"&gt;"SupplierName"&lt;/span&gt;, p.Supplier.CompanyName)&lt;/pre&gt;&lt;pre class="alt"&gt;                                                        )&lt;/pre&gt;&lt;pre&gt;                                             );&lt;/pre&gt;&lt;pre class="alt"&gt;            xlinq.Save(&lt;span class="str"&gt;"NewXML.xml"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;            Console.Write(xlinq);            &lt;/pre&gt;&lt;pre class="alt"&gt;            Console.Read();&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;    }    &lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;The output in the (command window) looks like the following:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sanjeets/WindowsLiveWriter/HowToSeemlesslyExportDataFromDatabasetoX_42E0/Output-linq%5B3%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="616" src="http://blogs.msdn.com/blogfiles/sanjeets/WindowsLiveWriter/HowToSeemlesslyExportDataFromDatabasetoX_42E0/Output-linq_thumb%5B1%5D.jpg" width="699" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Check out this space, lots more coming up...&lt;/p&gt;
&lt;p&gt;Microsoft ROCKS!!!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3115449" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjeets/archive/tags/C_2300_+3.0/default.aspx">C# 3.0</category><category domain="http://blogs.msdn.com/sanjeets/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ Lists - Anonymous Methods and Lambda Expressions</title><link>http://blogs.msdn.com/sanjeets/archive/2007/06/06/linq-lists-anonymous-methods-and-lambda-expressions.aspx</link><pubDate>Wed, 06 Jun 2007 14:22:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3115088</guid><dc:creator>Sanjeet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjeets/comments/3115088.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjeets/commentrss.aspx?PostID=3115088</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanjeets/rsscomments.aspx?PostID=3115088</wfw:comment><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Year: 2005 A.D.&lt;/strong&gt;&lt;br&gt;&lt;/em&gt;The C# 2.0 specification is released in the month of September. It talks about "new" features. We were introduced with a new "in-line" feature of using delegates. We called it "Anonymous Methods". Needless to say, its named as such because:&lt;br&gt;- Its Anonymous (no method name is given)&lt;br&gt;- Its InLine (How can you call something without a name, makes sense doesn't it?)  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Year: 2006 A.D.&lt;/em&gt;&lt;br&gt;&lt;/strong&gt;The C# 3.0 specification is released in the month of May. It talks about new features. Among a number of path breaking innovative ideas, we have something called "Lambda Expressions". It claims to provide more concise, functional syntax for writing anonymous methods.  &lt;p&gt;Lets checkout the basic syntax of Anonymous Methods:&lt;/p&gt; &lt;div class="csharpcode-wrapper" style="width: 78.7%; height: 210px"&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; D(&lt;span class="kwrd"&gt;int&lt;/span&gt; x); &lt;/pre&gt;&lt;pre&gt;D d1 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { }; &lt;span class="rem"&gt;// Ok &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;D d2 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;() { }; &lt;span class="rem"&gt;// Error, signature mismatch &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;D d3 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;long&lt;/span&gt; x) { }; &lt;span class="rem"&gt;// Error, signature mismatch &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;D d4 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; x) { }; &lt;span class="rem"&gt;// Ok &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;D d5 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; x) { &lt;span class="kwrd"&gt;return&lt;/span&gt;; }; &lt;span class="rem"&gt;// Ok &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;D d6 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; x) { &lt;span class="kwrd"&gt;return&lt;/span&gt; x; }; &lt;span class="rem"&gt;// Error, return type mismatch &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; E(&lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; x); &lt;/pre&gt;&lt;pre class="alt"&gt;E e1 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { }; &lt;span class="rem"&gt;// Error, E has an out parameter &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;E e2 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; x) { x = 1; }; &lt;span class="rem"&gt;// Ok &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;E e3 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; x) { x = 1; }; &lt;span class="rem"&gt;// Error, signature mismatch &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; P(&lt;span class="kwrd"&gt;params&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] a);&lt;/pre&gt;&lt;pre class="alt"&gt;P p1 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { }; &lt;span class="rem"&gt;// Error, end of block reachable &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;P p2 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { &lt;span class="kwrd"&gt;return&lt;/span&gt;; }; &lt;span class="rem"&gt;// Error, return type mismatch &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;P p3 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { &lt;span class="kwrd"&gt;return&lt;/span&gt; 1; }; &lt;span class="rem"&gt;// Ok &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;P p4 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;"Hello"&lt;/span&gt;; }; &lt;span class="rem"&gt;// Error, return type mismatch &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;P p5 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;[] a) { &lt;span class="rem"&gt;// Ok &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; a[0]; }; &lt;/pre&gt;&lt;pre class="alt"&gt;P p6 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;params&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] a) { &lt;span class="rem"&gt;// Error, params modifier &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; a[0]; }; &lt;/pre&gt;&lt;pre class="alt"&gt;P p7 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;[] a) { &lt;span class="rem"&gt;// Error, return type mismatch &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (a.Length &amp;gt; 0) &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; a[0]; &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;"Hello"&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;}; &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; Q(&lt;span class="kwrd"&gt;params&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] a); &lt;/pre&gt;&lt;pre class="alt"&gt;Q q1 = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;[] a) { &lt;span class="rem"&gt;// Ok &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (a.Length &amp;gt; 0) &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; a[0]; &lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;"Hello"&lt;/span&gt;; &lt;/pre&gt;&lt;pre class="alt"&gt;};&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;The best example of an anonymous method is when a delegate is used as an Event Handler:&lt;/p&gt;
&lt;p&gt;Without Anonymous:&lt;/p&gt;
&lt;div class="csharpcode-wrapper" style="width: 78.96%; height: 127px"&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;MyButton.Click += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(MyButtonClicked);&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; MyButtonClicked(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;MessageBox.Show(&lt;span class="str"&gt;"Hello World!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;With Anonymous:&lt;/p&gt;
&lt;div class="csharpcode-wrapper" style="width: 79.06%; height: 97px"&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;MyButton.Click += &lt;span class="kwrd"&gt;delegate&lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;MessageBox.Show(&lt;span class="str"&gt;"Hello World!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;From the above comparison, you can make out that using InLine Functions, we do not need to:&lt;br&gt;- pass arguments across functions.&lt;br&gt;- you can use the scope level variables easily.&lt;br&gt;But, it has tradeoffs which involve code readability and reusability hassles. As the age old saying goes about InLine Functions: Use it efficiently, as its faster than calling functions but slightly difficult to manage.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;u&gt;&lt;strong&gt;Lambda Expressions&lt;/strong&gt;&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It is written as a parameter list, followed by the =&amp;gt; (slanted lambda?) token, followed by an expression or a statement block.&lt;/p&gt;
&lt;div class="csharpcode-wrapper" style="width: 79.42%; height: 400px"&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        List&amp;lt;Vehicle&amp;gt; vlist = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Vehicle&amp;gt;&lt;/pre&gt;&lt;pre&gt;                              {&lt;/pre&gt;&lt;pre class="alt"&gt;                                  &lt;span class="kwrd"&gt;new&lt;/span&gt; Vehicle{Make=&lt;span class="str"&gt;"Mercedes"&lt;/span&gt;, Model=&lt;span class="str"&gt;"Benz"&lt;/span&gt;, Mileage=12},&lt;/pre&gt;&lt;pre&gt;                                  &lt;span class="kwrd"&gt;new&lt;/span&gt; Vehicle{Make=&lt;span class="str"&gt;"Renault"&lt;/span&gt;, Model=&lt;span class="str"&gt;"Logan"&lt;/span&gt;, Mileage=15},&lt;/pre&gt;&lt;pre class="alt"&gt;                                  &lt;span class="kwrd"&gt;new&lt;/span&gt; Vehicle{Make=&lt;span class="str"&gt;"Honda"&lt;/span&gt;, Model=&lt;span class="str"&gt;"Accord"&lt;/span&gt;, Mileage=12},&lt;/pre&gt;&lt;pre&gt;                              };&lt;/pre&gt;&lt;pre class="alt"&gt;        IEnumerable&amp;lt;Vehicle&amp;gt; vehicles = vlist.Where(v =&amp;gt; v.Mileage &amp;gt; 10);&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Vehicle v &lt;span class="kwrd"&gt;in&lt;/span&gt; vehicles)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            Console.WriteLine(v.Make);&lt;/pre&gt;&lt;pre class="alt"&gt;            Console.WriteLine(v.Model);&lt;/pre&gt;&lt;pre&gt;            Console.WriteLine(v.Mileage);&lt;/pre&gt;&lt;pre class="alt"&gt;            Console.WriteLine(&lt;span class="str"&gt;"-----------------"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;        Console.Read();&lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Vehicle&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Make;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Model;&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Mileage;&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;In the above example:&lt;br&gt;&lt;em&gt;IEnumerable&amp;lt;Vehicle&amp;gt; vehicles = vlist.Where(v =&amp;gt; v.Mileage &amp;gt; 10);&lt;/em&gt;&lt;/p&gt;&lt;em&gt;
&lt;p&gt;&lt;/em&gt;The Lambda Expression: &lt;br&gt;&lt;em&gt;v =&amp;gt; v.Mileage &amp;gt; 10 &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;replaces: &lt;br&gt;&lt;em&gt;new delegate(Vehicle v){&lt;br&gt;v.Mileage &amp;gt; 10;&lt;br&gt;}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It can also be replaced by:&lt;/p&gt;
&lt;div class="csharpcode-wrapper" style="width: 79.29%; height: 104px"&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;IEnumerable&amp;lt;Vehicle&amp;gt; vehicles = from v &lt;span class="kwrd"&gt;in&lt;/span&gt; vlist&lt;/pre&gt;&lt;pre&gt;                                            &lt;span class="kwrd"&gt;where&lt;/span&gt; v.Mileage &amp;gt; 12&lt;/pre&gt;&lt;pre class="alt"&gt;                                            select v;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;Try this: &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/default.aspx"&gt;The Evolution Of LINQ And Its Impact On The Design Of C#&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These samples were created using: &lt;a href="http://msdn.microsoft.com/vstudio/express/future/visualcsharp/default.aspx"&gt;Microsoft Visual C# Codename "Orcas" Express Edition&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3115088" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjeets/archive/tags/C_2300_+3.0/default.aspx">C# 3.0</category><category domain="http://blogs.msdn.com/sanjeets/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>The Var Of The Worlds</title><link>http://blogs.msdn.com/sanjeets/archive/2007/06/05/the-var-of-the-worlds.aspx</link><pubDate>Wed, 06 Jun 2007 08:30:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3109843</guid><dc:creator>Sanjeet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjeets/comments/3109843.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjeets/commentrss.aspx?PostID=3109843</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanjeets/rsscomments.aspx?PostID=3109843</wfw:comment><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Hello folks,  &lt;p&gt;This time we will explore LINQ over a series of Posts.  &lt;p&gt;As you must be knowing the age old "var" is back. But, is it the same old var that used to be in VB 6.0 days?  &lt;p&gt;Precisely its not the same it has got a number of new features:&lt;br&gt;- You have to declare and instantiate it at the same line of code. Reason: It is smart enough to understand the assigned data type, and it becomes it.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sanjeets/WindowsLiveWriter/TheVarOfTheWorlds_13BC8/var-declare%5B4%5D.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="251" src="http://blogs.msdn.com/blogfiles/sanjeets/WindowsLiveWriter/TheVarOfTheWorlds_13BC8/var-declare_thumb%5B2%5D.jpg" width="471" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;var s = int.MaxValue; // it becomes Int32&lt;br&gt;var s2 = double.MaxValue; // it becomes double&lt;br&gt;var s3 = "The Var Of The Worlds" // string &lt;/p&gt; &lt;p&gt;- You cannot assign multiple data types to it. Any attempt to do so results in a compile time error.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sanjeets/WindowsLiveWriter/TheVarOfTheWorlds_13BC8/var-typecast%5B7%5D.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="227" src="http://blogs.msdn.com/blogfiles/sanjeets/WindowsLiveWriter/TheVarOfTheWorlds_13BC8/var-typecast_thumb%5B5%5D.jpg" width="456" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Code with var:&lt;/p&gt; &lt;div class="csharpcode-wrapper" style="width: 62.08%; height: 210px"&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;         var s = from m &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;).GetMethods()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;                 select m.Name;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;         &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; str &lt;span class="kwrd"&gt;in&lt;/span&gt; s)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt;             Console.WriteLine(str);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:&lt;/span&gt;         Console.Read();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;p&gt;Code without a var:&lt;/p&gt;
&lt;div class="csharpcode-wrapper" style="width: 62.16%; height: 231px"&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;         IEnumerable&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; s  = &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;             from m &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;).GetMethods()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;             select m.Name;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt; &amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt;         &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; str &lt;span class="kwrd"&gt;in&lt;/span&gt; s)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:&lt;/span&gt;             Console.WriteLine(str);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:&lt;/span&gt;         Console.Read();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
&lt;/style&gt;
&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3109843" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjeets/archive/tags/C_2300_+3.0/default.aspx">C# 3.0</category><category domain="http://blogs.msdn.com/sanjeets/archive/tags/LINQ/default.aspx">LINQ</category></item></channel></rss>