<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Tom Hines (writinThatCode.com)</title>
    <link rel="self" type="application/xml" href="http://geekswithblogs.net/THines01/Atom.aspx" />
    <subtitle type="html">Writin' That Code!</subtitle>
    <id>http://geekswithblogs.net/THines01/Default.aspx</id>
    <author>
        <name>Tom Hines</name>
        <uri>http://geekswithblogs.net/THines01/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 0.0.0.0">Subtext</generator>
    <updated>2012-02-10T16:58:04Z</updated>
    <entry>
        <title>Linq Challenge in C++</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2012/02/10/linqchallengecpp.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2012/02/10/linqchallengecpp.aspx</id>
        <published>2012-02-10T16:53:29-06:00:00</published>
        <updated>2012-02-10T16:58:04Z</updated>
        <summary type="html">Taking what seems to be a simple LINQ task (in C#) and converting it to C++.</summary>
        <content type="html">&lt;p&gt;I really love the LINQ language extension in dot net programming and I’m really glad it was added to a language I love (C#).&lt;/p&gt;
&lt;p&gt;My background, however, has a lot of C++ in it and I still do some coding in C++ – sometimes for fun and sometimes to put back into practice things I should have know for years, but are just now being recognized by my ever-widening eyes.  A lot of that new vision comes from seeing C# and LINQ and, of course, practicing all forms of programming MOJO on programming forums, like &lt;a href="http://www.daniweb.com/" target="_blank"&gt;DaniWeb.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One particular post I saw there was in the C++ forum, where a user posted a question about two-dimensional arrays and how to search for a particular pattern of digits based on array boundaries.  The user posted a block of digits like this: &lt;br /&gt;2,2,9,8,7,3,4, &lt;br /&gt;0,0,0,0,0,0,0, &lt;br /&gt;3,4,5,7,8,9,6, &lt;br /&gt;0,0,0,0,0,0,0, &lt;br /&gt;1,3,4,5,5,5,5&lt;/p&gt;
&lt;p&gt;The question asked was how to return a 2d array of the rows that did not contain “all” zero values.  Most programmers can imagine a series of loops and boolean settings based on boundaries to eliminate the “bad” rows.&lt;/p&gt;
&lt;p&gt;I immediately thought “Use a WHERE clause on it”. …then I remembered I was in the C++ forum and, given the experience of the developer, might need a more traditional approach.  I gave a suggestion about looping then began to make some examples for myself – one full solution “the (traditional) hard way”, one solution in C# with LINQ and &lt;strong&gt;then&lt;/strong&gt; curiosity took hold and I convinced myself it would not be “too hard” to do it with C++ (CLI) and LINQ.  I underestimated the complexity, but consider it good practice.&lt;/p&gt;
&lt;p&gt;Here is the C# code:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="COLOR: blue"&gt;using &lt;/span&gt;System.Linq;
&lt;span style="COLOR: green"&gt;//
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;namespace &lt;/span&gt;DW_409646_CS_CON
{
   &lt;span style="COLOR: blue"&gt;class &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Program
   &lt;/span&gt;{
      &lt;span style="COLOR: blue"&gt;public static int&lt;/span&gt;[,] matrix2d = &lt;span style="COLOR: blue"&gt;new int&lt;/span&gt;[5, 7]
      {
         {2,2,9,8,7,3,4},
         {0,0,0,0,0,0,0},
         {3,4,5,7,8,9,6},
         {0,0,0,0,0,0,0},
         {1,3,4,5,5,5,5}
      };

      &lt;span style="COLOR: blue"&gt;static void &lt;/span&gt;Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] args)
      {
         &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt; lst_int = matrix2d.OfType&amp;lt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&amp;gt;().ToList();
         &lt;span style="COLOR: green"&gt;//
         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int &lt;/span&gt;intHeight = (matrix2d.GetUpperBound(0) + 1);
         &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;intWidth = (matrix2d.GetUpperBound(1) + 1);

         &lt;span style="COLOR: green"&gt;// Method one
         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;[][] arr =
         (
            &lt;span style="COLOR: blue"&gt;from &lt;/span&gt;i &lt;span style="COLOR: blue"&gt;in &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Enumerable&lt;/span&gt;.Range(0, intHeight)
            &lt;span style="COLOR: blue"&gt;let &lt;/span&gt;lst_intEachRow = lst_int.GetRange(i * intWidth, intWidth)
            &lt;span style="COLOR: blue"&gt;where &lt;/span&gt;!lst_intEachRow.All(ix =&amp;gt; ix.Equals(0))
            &lt;span style="COLOR: blue"&gt;select &lt;/span&gt;lst_intEachRow.ToArray()
         ).ToArray();

         &lt;span style="COLOR: green"&gt;// Method two
         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;[][] arr2 =
            &lt;span style="COLOR: #2b91af"&gt;Enumerable&lt;/span&gt;.Range(0, intHeight)
               .Select(i =&amp;gt; lst_int.GetRange(i * intWidth, intWidth)
                  .ToArray()).Where(xa =&amp;gt; !xa.All(ix =&amp;gt; ix.Equals(0)))
                     .ToArray();
      }
   }
}&lt;/pre&gt;
&lt;p&gt;The C++ conversion was a little more complex, but can be done.  The tricky part was getting the return value from the Enumerable based on the height of the array:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;#include &lt;span class="str"&gt;"stdafx.h"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System::Collections::Generic;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System::Linq;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="rem"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CArrayHelper&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt;:&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;,2&amp;gt;^ matrix2d;&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;   CArrayHelper(array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;,2&amp;gt;^ matrix)&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;      matrix2d = matrix;&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;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, String^&amp;gt;^ intToString =&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;      gcnew Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, String^&amp;gt;(IntToString);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;   &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;^ isZero =&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;      gcnew Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;(IsZero);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;^ notAllZeroes =&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;      gcnew Func&amp;lt;array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt;(AllZeroes);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;, array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^&amp;gt;^ getArrFromArr =&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;      gcnew Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;, array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^&amp;gt;(GetArrFromArr);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; array&amp;lt;array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^&amp;gt;^ OutputArrayNonZeroes()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;   {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;         Enumerable::ToArray&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            (Enumerable::Where&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;               (Enumerable::Select&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                  (Enumerable::Range(0, matrix2d-&amp;gt;GetUpperBound(0) + 1),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                     getArrFromArr), notAllZeroes));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;   }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt;:&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; String^ IntToString(&lt;span class="kwrd"&gt;int&lt;/span&gt; i)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;   {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; i.ToString();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;   }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsZero(&lt;span class="kwrd"&gt;int&lt;/span&gt; i)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;   {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; i.Equals(0);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;   }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; AllZeroes(array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^ arr)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;   {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; !Enumerable::All&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(arr, isZero);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;   }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;   &lt;span class="kwrd"&gt;static&lt;/span&gt; array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^ GetArrFromArr(&lt;span class="kwrd"&gt;int&lt;/span&gt; i, &lt;span class="kwrd"&gt;int&lt;/span&gt; j)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;   {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;         Enumerable::ToArray(&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            Enumerable::ToList&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;               Enumerable::ToArray(&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;                  Enumerable::OfType&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(matrix2d)))&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                     -&amp;gt;GetRange(i * (matrix2d-&amp;gt;GetUpperBound(1) + 1),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                        (matrix2d-&amp;gt;GetUpperBound(1) + 1)));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;   }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;};&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; DumpIntArray(array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^ arr_int)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;   Console::WriteLine(&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;      String::Join(&lt;span class="str"&gt;","&lt;/span&gt;, &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;         Enumerable::ToArray(&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;            Enumerable::Select&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;               Enumerable::ToArray&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(arr_int), CArrayHelper::intToString))));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; main(array&amp;lt;System::String ^&amp;gt; ^args)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;   Action&amp;lt;array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^&amp;gt;^ dumpIntArray = gcnew Action&amp;lt;array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^&amp;gt;(DumpIntArray);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;   array&amp;lt;array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^&amp;gt;^ arrOutput = CArrayHelper(gcnew array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;,2&amp;gt;(5,7)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;   {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;      {2,2,9,8,7,3,4},&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;      {0,0,0,0,0,0,0},&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;      {3,4,5,7,8,9,6},&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;      {0,0,0,0,0,0,0},&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;      {1,3,4,5,5,5,5}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;   }).OutputArrayNonZeroes();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;   Enumerable::ToList&amp;lt;array&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^&amp;gt;(arrOutput)-&amp;gt;ForEach(dumpIntArray);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; 0;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/148664.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/148664.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/148664.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/148664.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Programming Forums</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2011/12/01/forums.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2011/12/01/forums.aspx</id>
        <published>2011-12-01T12:37:40-06:00:00</published>
        <updated>2011-12-01T12:48:00Z</updated>
        <content type="html">
		&lt;p&gt; &lt;/p&gt;
		&lt;img style="WIDTH: 201px; HEIGHT: 171px" src="http://www.destination360.com/europe/italy/images/s/italy-roman-forum.jpg" width="204" height="187" /&gt;
		&lt;p&gt; &lt;/p&gt;
		&lt;p&gt;Here is a list of programming forums I visit for:&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Seeing what programmers are currently learning 
&lt;/li&gt;
				&lt;li&gt;Seeing what makes programmers struggle 
&lt;/li&gt;
				&lt;li&gt;Answering programming questions 
&lt;/li&gt;
				&lt;li&gt;Asking programming questions &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;The sites require (free) registration and, in different ways, keep track of points you earn for participation as well as a reputation score.&lt;/p&gt;
		&lt;p&gt;Here they are in no specific order:&lt;/p&gt;
		&lt;ol&gt;
				&lt;li&gt;
						&lt;a href="http://www.daniweb.com"&gt;http://www.daniweb.com&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://social.msdn.microsoft.com/Forums/"&gt;http://social.msdn.microsoft.com/Forums/&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://stackoverflow.com/"&gt;http://stackoverflow.com/&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://stackexchange.com/"&gt;http://stackexchange.com/&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://www.experts-exchange.com/"&gt;http://www.experts-exchange.com/&lt;/a&gt;
				&lt;/li&gt;
		&lt;/ol&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/147907.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/147907.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/147907.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/147907.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Releasing Email File Attachment Resources (System.Net.Mail)</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2011/07/14/attachmentrelease.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2011/07/14/attachmentrelease.aspx</id>
        <published>2011-07-14T11:40:53-05:00:00</published>
        <updated>2011-07-14T11:53:03Z</updated>
        <summary type="html">Lesson learned about releasing attachment resources with System.Net.Mail.</summary>
        <content type="html">&lt;p&gt;I’ve been looking through the temp directories on my production machines and had realized some overlooked design points in a number of programs; namely the deletion of certain temp files. &lt;/p&gt;
&lt;p&gt;One situation that particularly caught my attention was some email attachments that should have been deleted. &lt;br /&gt;
Even though the code was actively calling File.Delete() on some email attachments, they were not being deleted. &lt;br /&gt;
An error log showed the program was throwing an exception when attempting to delete the files. &lt;br /&gt;
The mail was being delivered successfully with no visible flaws to the customer.&lt;/p&gt;
&lt;p&gt;I finally decided to write some test code to reproduce the problem that I originally thought was caused by the ZIP compression step right before the mail send.&lt;/p&gt;
&lt;p&gt;The problem actually turned out to be I was not calling Dispose() on the attachment resources after the mail send.  Most Dot Net classes I use don’t require the explicit calling of a Dispose() method, so I completely bypassed this one until it became necessary.  Here’s an example of the solution:&lt;br /&gt;
 &lt;/p&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.IO;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Net.Mail;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; …&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;      &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;      &lt;span class="rem"&gt;/// Example of simple mailing with attachment and release of attachments.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;      &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;      &lt;span class="rem"&gt;/// &amp;lt;param name="lst_strAttachments"&amp;gt;List&amp;amp;lt;string&amp;amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &lt;span class="rem"&gt;/// filenames to attach to the email.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;      &lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;      &lt;span class="rem"&gt;/// &amp;lt;param name="strError"&amp;gt;Output of exception text&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;      &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;bool: true if no exceptions&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; SendMail(List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; lst_strAttachments, &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; strError)&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;         &lt;span class="kwrd"&gt;bool&lt;/span&gt; blnRetVal = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;         &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; strSubjectBody = &lt;span class="str"&gt;"Test Email With Attachment"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="rem"&gt;// Make a basic mail message&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            MailMessage msg = &lt;span class="kwrd"&gt;new&lt;/span&gt; MailMessage()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;               Subject = strSubjectBody,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;               Body = strSubjectBody,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;               Priority = MailPriority.Low,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;               From = &lt;span class="kwrd"&gt;new&lt;/span&gt; MailAddress(EMAIL_ADDRESS_TO_FROM)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            msg.To.Add(msg.From); &lt;span class="rem"&gt;//same as from&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            &lt;span class="rem"&gt;//http://msdn.microsoft.com/en-us/library/system.net.mail.attachment.aspx&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            lst_strAttachments.ForEach(a =&amp;gt; msg.Attachments.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; Attachment(a)));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            (&lt;span class="kwrd"&gt;new&lt;/span&gt; SmtpClient(SMTP_SERVER_ADDRESS)).Send(msg);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="rem"&gt;// Free the attachment resources&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            msg.Attachments.ToList().ForEach(a =&amp;gt; a.Dispose());&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;         &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception exc)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            blnRetVal = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            strError = exc.Message;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; blnRetVal;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;  &lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt;…and a small calling program example: &lt;br /&gt;
The Zip class is a custom wrapper.&lt;/p&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;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;   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;string&lt;/span&gt; strError = &lt;span class="str"&gt;""&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;         &lt;span class="kwrd"&gt;string&lt;/span&gt; strTempFileName = CSampleTempFile.MakeSampleTempFile(&lt;span class="str"&gt;"One.txt"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;         &lt;span class="kwrd"&gt;string&lt;/span&gt; strZipFileName = Path.Combine(Path.GetTempPath(),&lt;span class="str"&gt;"Test.zip"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;         &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (!CZipLib.ZipMove(strZipFileName,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;{strTempFileName}, &lt;span class="rem"&gt;//list of files (containing 1)&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;ref&lt;/span&gt; strError))&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(&lt;span class="str"&gt;"Could not zip file {0:G}\n\t: {1:G}"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;               strTempFileName, strError);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt;;&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;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (!SendMail(&lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;{strZipFileName}, &lt;span class="kwrd"&gt;ref&lt;/span&gt; strError))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            Console.WriteLine(&lt;span class="str"&gt;"Could not send mail: "&lt;/span&gt; + strError);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;         File.Delete(strZipFileName); &lt;span class="rem"&gt;//&amp;lt;--WORKS!&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/146221.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/146221.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/146221.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/146221.aspx</trackback:ping>
    </entry>
    <entry>
        <title>GridView from LINQ to Objects</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2011/04/20/gridviewlinq.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2011/04/20/gridviewlinq.aspx</id>
        <published>2011-04-20T14:28:45-05:00:00</published>
        <updated>2011-04-20T14:32:31Z</updated>
        <summary type="html">A technique for displaying results from LINQ to an ASP.NET GridView.</summary>
        <content type="html">&lt;p&gt;One of the greatest benefits I’ve found in simple web output in ASP.NET is the GridView.  I regularly use it to display data from objects or databases where the output can simply be shown in a grid form (similar to instances where I would deliver a read-only spreadsheet).&lt;/p&gt;
&lt;p&gt;I attach the GridView to the &amp;lt;asp:PlaceHolder /&amp;gt; inside of a &amp;lt;form /&amp;gt; on the aspx page: &lt;br /&gt;
&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/holder_2.jpg"&gt;&lt;img title="holder" border="0" alt="holder" width="244" height="82" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/holder_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;A simple, bulk method of getting the data into the GridView is with the GridView.DataSource property.&lt;/p&gt;
&lt;p&gt;A GridView.DataSource must be either an IListSource, IEnumerable, or IDataSource.&lt;/p&gt;
&lt;p&gt;A natural partner to the GridView.DataSource property is the System.Data.DataSet. &lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;Using the WebService located at: &lt;a href="http://www.holidaywebservice.com/Holidays/US/USHolidayService.asmx"&gt;http://www.holidaywebservice.com/Holidays/US/USHolidayService.asmx&lt;/a&gt; . &lt;br /&gt;
I chose this WS, because it returns a DataSet (easy example).&lt;/p&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;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; WS_HOLIDAY;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; _Default : System.Web.UI.Page &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) {}&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ShowReport()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;      GridView gvHolidays = &lt;span class="kwrd"&gt;new&lt;/span&gt; GridView()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;         HorizontalAlign = HorizontalAlign.Center,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;         GridLines = GridLines.Both,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;         BackColor = System.Drawing.Color.FromName(&lt;span class="str"&gt;"#CCCCCC"&lt;/span&gt;),&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;         DataSource = (&lt;span class="kwrd"&gt;new&lt;/span&gt; USHolidayService()).GetHolidaysForYear(2011)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;      };&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;      holder.Controls.Add(gvHolidays);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;      gvHolidays.DataBind();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Result: &lt;br /&gt;
&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/GridView0Torn_2.jpg"&gt;&lt;img title="GridView0Torn" border="0" alt="GridView0Torn" width="244" height="110" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/GridView0Torn_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If the DataSource is to be a result of a LINQ query, the GridView will automatically choose the Property Names used in the return value (for known types with Properties).&lt;/p&gt;
&lt;p&gt;If the returned type is Anonymous, you must supply the declarator that will be used a the Property Name as shown below. &lt;br /&gt;
(This will also work if you have a known type, but want to change the property names to be more appropriate.) &lt;br /&gt;
(This will also work if you have a returned object that used Fields instead of Properties):&lt;/p&gt;
&lt;p&gt;Using Linq to Objects:&lt;/p&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;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; _Default : System.Web.UI.Page &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;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) {}&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;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ShowReport()&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;span class="rem"&gt;//////////////////////////////////////////////////////&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;      &lt;span class="rem"&gt;// simple func to parse a string by space and period&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;      Func&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;[]&amp;gt; WordParse = s =&amp;gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; s.Split(&lt;span class="str"&gt;" ."&lt;/span&gt;.ToCharArray(),&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            StringSplitOptions.RemoveEmptyEntries);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;      };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;      &lt;span class="rem"&gt;//////////////////////////////////////////////////&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;      &lt;span class="rem"&gt;// some random data representing a data source&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;      List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; lst_strData = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;         &lt;span class="str"&gt;"This Is The Way We Funk With You"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;         &lt;span class="str"&gt;"Open up your funky mind and you can fly."&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;         &lt;span class="str"&gt;"Listen while I tell you of the clones."&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;         &lt;span class="str"&gt;"You can't miss what you can't measure."&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;         &lt;span class="str"&gt;"Hard as steel and still gettin' harder."&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;      };&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;      &lt;span class="rem"&gt;//////////////////////////////////////////////////&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;      &lt;span class="rem"&gt;// Create a GridView with some default settings.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;      GridView gv = &lt;span class="kwrd"&gt;new&lt;/span&gt; GridView()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;      {  &lt;span class="rem"&gt;//top-level atributes can be auto populated.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;         HorizontalAlign = HorizontalAlign.Center,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;         GridLines = GridLines.Both,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;         BackColor = System.Drawing.Color.FromName(&lt;span class="str"&gt;"#CCCCCC"&lt;/span&gt;),&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;      };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;      &lt;span class="rem"&gt;//////////////////////////////////////////////&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;      &lt;span class="rem"&gt;// All other attributes are done separately.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;      &lt;span class="rem"&gt;// These are just my personal preferences&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;      gv.RowStyle.HorizontalAlign = HorizontalAlign.Center;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;      gv.AlternatingRowStyle.BackColor = System.Drawing.Color.FromName(&lt;span class="str"&gt;"#EEEEEE"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;      gv.HeaderStyle.Font.Bold = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;      gv.HeaderStyle.BackColor = System.Drawing.Color.FromName(&lt;span class="str"&gt;"YELLOW"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;      gv.Font.Size = 9;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;      &lt;span class="rem"&gt;//&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;      &lt;span class="kwrd"&gt;long&lt;/span&gt; lngRowNum = 0; &lt;span class="rem"&gt;//&amp;lt;-used to make the row counter&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;      gv.DataSource =&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;         from str &lt;span class="kwrd"&gt;in&lt;/span&gt; lst_strData&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;         let arr_str = WordParse(str)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;         &lt;span class="kwrd"&gt;where&lt;/span&gt; (arr_str.Count().Equals(7))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;         select &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="rem"&gt;//ANONYMOUS TYPE&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            &lt;span class="rem"&gt;// ** Anonymous type members **&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            &lt;span class="rem"&gt;// These become the column names in the GridView!!!&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;            NUM_SENTENCES = ++lngRowNum, &lt;span class="rem"&gt;//&amp;lt;-Auto-incrementing row counter&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            WORD1 = arr_str[0],&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;            WORD2 = arr_str[1],&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;            WORD3 = arr_str[2],&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;            WORD4 = arr_str[3],&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;            WORD5 = arr_str[4],&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;            WORD6 = arr_str[5],&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;            WORD7 = arr_str[6]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;         };&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;      holder.Controls.Add(gv);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;      gv.DataBind();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="csharpcode"&gt; &lt;/div&gt;
&lt;div class="csharpcode"&gt; &lt;/div&gt;
&lt;div class="csharpcode"&gt;Result: &lt;br /&gt;
&lt;br /&gt;
&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/GridView1_2.jpg"&gt;&lt;img title="GridView1" border="0" alt="GridView1" width="244" height="77" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/GridView1_thumb.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;If the code does not supply the declarator/Property Name, an error will be generated: &lt;br /&gt;
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access. &lt;br /&gt;
&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/Declarator_2.jpg"&gt;&lt;img title="Declarator" border="0" alt="Declarator" width="244" height="25" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/GridViewfromLINQtoObjects_CB95/Declarator_thumb.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt; &lt;/div&gt;
&lt;div class="csharpcode"&gt;Please let me know if this does not make any sense :)&lt;/div&gt;
&lt;div class="csharpcode"&gt; &lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/144976.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/144976.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/144976.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/144976.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Ambiguous Symbol -- Compiler Error C2872</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2011/04/20/ambiguoussymbol.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2011/04/20/ambiguoussymbol.aspx</id>
        <published>2011-04-20T09:26:52-05:00:00</published>
        <updated>2011-04-20T09:31:15Z</updated>
        <summary type="html">How I solved the Ambiguous Symbol -- Compiler Error C2872 problem in C++ (dot net).</summary>
        <content type="html">&lt;p&gt;I recently encountered the Ambiguous Symbol error, specifically: “error C2872: 'IMasterLoader' : ambiguous symbol” when using an interface I wrote in C# with a class built in C++.&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="4"&gt;&lt;font color="#0000ff" size="4"&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;namespace&lt;/span&gt; IMasterLoader&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;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IMasterLoader&amp;lt;T&amp;gt; &lt;span class="kwrd"&gt;where&lt;/span&gt; T : &lt;span class="kwrd"&gt;class&lt;/span&gt;&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;      &lt;span class="kwrd"&gt;bool&lt;/span&gt; Load(T master, &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; strError);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="csharpcode"&gt; &lt;/div&gt;
&lt;div class="csharpcode"&gt;Code producing the error:&lt;/div&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;// LmCellSectorLog.h&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="preproc"&gt;#pragma&lt;/span&gt; once&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System::Collections::Generic;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System::Data;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; LmCellSectorLog {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; IMasterLoader;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CLmCellSectorLogLoader : IMasterLoader&amp;lt;CLmCellSectorLogMaster^&amp;gt;&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;    &lt;span class="kwrd"&gt;public&lt;/span&gt;:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Load(CLmCellSectorLogMaster^ master, String^% strError);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Compiler generated error C2872: 'IMasterLoader' : ambiguous symbol: &lt;br /&gt;
&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/AmbiguousSymbolCompilerErrorC2872_84D5/ambiguous_Symbol_2.jpg"&gt;&lt;img title="ambiguous_Symbol" border="0" alt="ambiguous_Symbol" width="244" height="38" style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/AmbiguousSymbolCompilerErrorC2872_84D5/ambiguous_Symbol_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While searching for a solution to this problem, I encountered the &lt;a title="Compiler Error C2872 (C++)" target="_blank" href="http://msdn.microsoft.com/en-us/library/t57wswcs(VS.80).aspx"&gt;Compiler Error C2872 (C++)&lt;/a&gt; page from MSDN, which didn’t have my &lt;em&gt;exact&lt;/em&gt; solution, but led me to think differently about the syntax.&lt;/p&gt;
&lt;p&gt;Jumping forward to the solution:&lt;/p&gt;
&lt;p&gt;Assuming the problem was the compiler’s “scope” and recognition of the interface, I &lt;em&gt;eventually&lt;/em&gt; changed the reference by fully qualifying the interface name with the “scope resolution operator (::)” and &lt;strong&gt;that solved the problem&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At that point, it was no longer necessary to reference the interface at the namespace: &lt;br /&gt;
 &lt;/p&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;public&lt;/span&gt; &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CLmCellSectorLogLoader : ::IMasterLoader::IMasterLoader&amp;lt;CLmCellSectorLogMaster^&amp;gt;&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;public&lt;/span&gt;:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Load(CLmCellSectorLogMaster^ master, String^% strError);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;};&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:93263c63-232a-43fd-9de8-3d86d4d8393d" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/code"&gt;code&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ambiguous+symbol"&gt;ambiguous symbol&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/.net"&gt;.net&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/dot+net"&gt;dot net&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CSharp"&gt;CSharp&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CPlusPlus"&gt;CPlusPlus&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/C%23"&gt;C#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/C%2b%2b"&gt;C++&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/144970.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/144970.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/144970.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/144970.aspx</trackback:ping>
    </entry>
    <entry>
        <title>ResponseStatusLine protocol violation</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/12/03/responsestatusline.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/12/03/responsestatusline.aspx</id>
        <published>2010-12-03T11:10:21-06:00:00</published>
        <updated>2010-12-06T10:44:06Z</updated>
        <summary type="html">This is an example of how to get around the ResponseStatusLine protocol violation in multiple .NET languages and in the app.config file.</summary>
        <content type="html">&lt;p&gt;I parse/scrape a few web page every now and then and recently ran across an error that stated: &lt;br /&gt;
"The server committed a protocol violation. Section=ResponseStatusLine".&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/ResponseStatusLineprotocolviolation_96CC/Exception_2.jpg"&gt;&lt;img title="Exception" border="0" alt="Exception" width="244" height="19" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/ResponseStatusLineprotocolviolation_96CC/Exception_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; Cause?:&lt;br /&gt;
On this page, I found an answer that suggests simply that the server header does not conform to the HTTP v1.1 specification.&lt;br /&gt;
[Paraphrased...]&lt;/p&gt;
&lt;p style="margin-left: 40px"&gt;&lt;br /&gt;
This issue is caused when a response followed by a request to {certain} services violate the HTTP v1.1 specification.&lt;br /&gt;
As an example, HTTP header keys should specifically not include any spaces in their names.&lt;br /&gt;
Some web servers do not fully respect this which causes this error to occur.&lt;/p&gt;
&lt;p style="margin-left: 40px"&gt;The Microsoft .Net framework enforces the HTTP v1.1 specification and will reject any responses that do not adhere to the specification.&lt;br /&gt;
When a validation failure occurs then a protocol violation error is generated.&lt;/p&gt;
&lt;p style="margin-left: 40px"&gt;To resolve this issue any gateway/proxy level network components should been upgraded or corrected to properly adhere to the HTTP v1.1 specification. &lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;After a few web searches, I found a couple of suggestions – one of which said the problem could be fixed by changing the HttpWebRequest ProtocolVersion to 1.0 with the command:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(strURI);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;req.ProtocolVersion = HttpVersion.Version10;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/ResponseStatusLineprotocolviolation_96CC/ProtocolVersion_2.jpg"&gt;&lt;img title="ProtocolVersion" border="0" alt="ProtocolVersion" width="244" height="54" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/ResponseStatusLineprotocolviolation_96CC/ProtocolVersion_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;…but that &lt;strong&gt;did not work&lt;/strong&gt; in my particular case.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;What &lt;strong&gt;DID work&lt;/strong&gt; was the next suggestion I found that suggested the use of the setting: “useUnsafeHeaderParsing” either in the app.config file &lt;strong&gt;or&lt;/strong&gt; programmatically.&lt;/p&gt;
&lt;p&gt;If added to the app.config, it would be:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!-- after the applicationSettings --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.net&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&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;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;settings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;httpWebRequest&lt;/span&gt; &lt;span class="attr"&gt;useUnsafeHeaderParsing&lt;/span&gt; &lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;settings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.net&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If done programmatically, it would look like this:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;C++:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;// UUHP_CPP.h&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="preproc"&gt;#pragma&lt;/span&gt; once&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System::Reflection;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; UUHP_CPP&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CUUHP_CPP&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt;:&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; UseUnsafeHeaderParsing(String^% strError)&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;            Assembly^ assembly = Assembly::GetAssembly(System::Net::Configuration::SettingsSection::typeid); &lt;span class="rem"&gt;//__typeof&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (nullptr==assembly)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                strError = &lt;span class="str"&gt;"Could not access Assembly"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            Type^ type = assembly-&amp;gt;GetType(&lt;span class="str"&gt;"System.Net.Configuration.SettingsSectionInternal"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (nullptr==type)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                strError = &lt;span class="str"&gt;"Could not access internal settings"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            Object^ obj = type-&amp;gt;InvokeMember(&lt;span class="str"&gt;"Section"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                BindingFlags::Static | BindingFlags::GetProperty | BindingFlags::NonPublic,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                nullptr, nullptr, gcnew array&amp;lt;Object^,1&amp;gt;(0));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(nullptr == obj)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                strError = &lt;span class="str"&gt;"Could not invoke Section member"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            FieldInfo^ fi = type-&amp;gt;GetField(&lt;span class="str"&gt;"useUnsafeHeaderParsing"&lt;/span&gt;, BindingFlags::NonPublic | BindingFlags::Instance);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(nullptr == fi)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                strError = &lt;span class="str"&gt;"Could not access useUnsafeHeaderParsing field"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!(&lt;span class="kwrd"&gt;bool&lt;/span&gt;)fi-&amp;gt;GetValue(obj))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                fi-&amp;gt;SetValue(obj, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;    };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;C# (CSharp):&lt;/p&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;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Reflection;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; UUHP_CS&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CUUHP_CS&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; UseUnsafeHeaderParsing(&lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; strError)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;         Assembly assembly = Assembly.GetAssembly(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(System.Net.Configuration.SettingsSection));&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == assembly)&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;            strError = &lt;span class="str"&gt;"Could not access Assembly"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;         Type type = assembly.GetType(&lt;span class="str"&gt;"System.Net.Configuration.SettingsSectionInternal"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == type)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            strError = &lt;span class="str"&gt;"Could not access internal settings"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;         &lt;span class="kwrd"&gt;object&lt;/span&gt; obj = type.InvokeMember(&lt;span class="str"&gt;"Section"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            BindingFlags.Static | BindingFlags.GetProperty | BindingFlags.NonPublic,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { });&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == obj)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            strError = &lt;span class="str"&gt;"Could not invoke Section member"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;         &lt;span class="rem"&gt;// If it's not already set, set it.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;         FieldInfo fi = type.GetField(&lt;span class="str"&gt;"useUnsafeHeaderParsing"&lt;/span&gt;, BindingFlags.NonPublic | BindingFlags.Instance);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == fi)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            strError = &lt;span class="str"&gt;"Could not access useUnsafeHeaderParsing field"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (!Convert.ToBoolean(fi.GetValue(obj)))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;         {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            fi.SetValue(obj, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;         }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;hr /&gt;
&lt;p&gt;F# (FSharp):&lt;/p&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;namespace&lt;/span&gt; UUHP_FS&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;open System&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;open System.Reflection&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    module CUUHP_FS =&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        let UseUnsafeHeaderParsing(strError : byref&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;) : &lt;span class="kwrd"&gt;bool&lt;/span&gt;  =&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="rem"&gt;//&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            let assembly : Assembly = Assembly.GetAssembly(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;&amp;lt;System.Net.Configuration.SettingsSection&amp;gt;)    &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; = assembly) then&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                strError &amp;lt;- &lt;span class="str"&gt;"Could not access Assembly"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                &lt;span class="kwrd"&gt;false&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&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;            let myType : Type = assembly.GetType(&lt;span class="str"&gt;"System.Net.Configuration.SettingsSectionInternal"&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; = myType) then&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                strError &amp;lt;- &lt;span class="str"&gt;"Could not access internal settings"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                &lt;span class="kwrd"&gt;false&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            let obj : Object = myType.InvokeMember(&lt;span class="str"&gt;"Section"&lt;/span&gt;, BindingFlags.Static ||| BindingFlags.GetProperty ||| BindingFlags.NonPublic, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, Array.zeroCreate 0)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; = obj) then&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                strError &amp;lt;- &lt;span class="str"&gt;"Could not invoke Section member"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                &lt;span class="kwrd"&gt;false&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="rem"&gt;// If it's not already set, set it.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            let fi : FieldInfo = myType.GetField(&lt;span class="str"&gt;"useUnsafeHeaderParsing"&lt;/span&gt;, BindingFlags.NonPublic ||| BindingFlags.Instance)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(&lt;span class="kwrd"&gt;null&lt;/span&gt; = fi) then&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                strError &amp;lt;- &lt;span class="str"&gt;"Could not access useUnsafeHeaderParsing field"&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                &lt;span class="kwrd"&gt;false&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (not(Convert.ToBoolean(fi.GetValue(obj)))) then&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                fi.SetValue(obj, &lt;span class="kwrd"&gt;true&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            &lt;span class="rem"&gt;// Now return true&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            &lt;span class="kwrd"&gt;true&lt;/span&gt;           &lt;/pre&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;VB (Visual Basic):&lt;/p&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;Option&lt;/span&gt; Explicit &lt;span class="kwrd"&gt;On&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;Option&lt;/span&gt; Strict &lt;span class="kwrd"&gt;On&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;Imports&lt;/span&gt; System&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Reflection&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; CUUHP_VB&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; UseUnsafeHeaderParsing(&lt;span class="kwrd"&gt;ByRef&lt;/span&gt; strError &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;&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;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; &lt;span class="kwrd"&gt;assembly&lt;/span&gt; &lt;span class="kwrd"&gt;As&lt;/span&gt; [&lt;span class="kwrd"&gt;Assembly&lt;/span&gt;]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;assembly&lt;/span&gt; = [&lt;span class="kwrd"&gt;assembly&lt;/span&gt;].GetAssembly(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(System.Net.Configuration.SettingsSection))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; (&lt;span class="kwrd"&gt;assembly&lt;/span&gt; &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            strError = &lt;span class="str"&gt;"Could not access Assembly"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; type &lt;span class="kwrd"&gt;As&lt;/span&gt; Type&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        type = [&lt;span class="kwrd"&gt;assembly&lt;/span&gt;].&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="str"&gt;"System.Net.Configuration.SettingsSectionInternal"&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; (type &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            strError = &lt;span class="str"&gt;"Could not access internal settings"&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; obj &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        obj = [type].InvokeMember(&lt;span class="str"&gt;"Section"&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            BindingFlags.&lt;span class="kwrd"&gt;Static&lt;/span&gt; &lt;span class="kwrd"&gt;Or&lt;/span&gt; BindingFlags.GetProperty &lt;span class="kwrd"&gt;Or&lt;/span&gt; BindingFlags.NonPublic, _&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, &lt;span class="kwrd"&gt;New&lt;/span&gt; [&lt;span class="kwrd"&gt;Object&lt;/span&gt;]() {})&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; (obj &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            strError = &lt;span class="str"&gt;"Could not invoke Section member"&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="rem"&gt;' If it's not already set, set it.&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; fi &lt;span class="kwrd"&gt;As&lt;/span&gt; FieldInfo&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        fi = [type].GetField(&lt;span class="str"&gt;"useUnsafeHeaderParsing"&lt;/span&gt;, BindingFlags.NonPublic &lt;span class="kwrd"&gt;Or&lt;/span&gt; BindingFlags.Instance)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; (fi &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            strError = &lt;span class="str"&gt;"Could not access useUnsafeHeaderParsing field"&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; (&lt;span class="kwrd"&gt;Not&lt;/span&gt; Convert.ToBoolean(fi.GetValue(obj))) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;            fi.SetValue(obj, &lt;span class="kwrd"&gt;True&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a82055c3-7524-4d5d-a7de-13da6ac1b302" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/C%2b%2b"&gt;C++&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CPP"&gt;CPP&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/VB"&gt;VB&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Visual+Basic"&gt;Visual Basic&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/F%23"&gt;F#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/FSharp"&gt;FSharp&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/C%23"&gt;C#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CSharp"&gt;CSharp&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ResponseStatusLine"&gt;ResponseStatusLine&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/protocol+violation"&gt;protocol violation&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/142985.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/142985.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/142985.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/142985.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Playing with Enumerable.Range (System.Linq)</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/09/08/enumerabledotrange.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/09/08/enumerabledotrange.aspx</id>
        <published>2010-09-08T15:18:05-05:00:00</published>
        <updated>2010-09-09T09:10:15Z</updated>
        <summary type="html">Here's an example of something fun and useful with Enumerable.Range in four different languages.</summary>
        <content type="html">&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:77815f10-14a2-432b-828c-c8f5a46f32cc" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Linq"&gt;Linq&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/IEnumerable.Range"&gt;Enumerable.Range&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Intersect"&gt;Intersect&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/F%23"&gt;F#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/FS"&gt;FS&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/C%23"&gt;C#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CS"&gt;CS&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/C%2b%2b"&gt;C++&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CPP"&gt;CPP&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Visual+Basic"&gt;Visual Basic&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/VB"&gt;VB&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;MSDN Reference: &lt;a title="MSDN Reference to Enumerable.Range" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.linq.enumerable.range.aspx"&gt;Enumerable.Range Method&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I deal with a lot of RANGES at work for a multitude of reasons. &lt;br /&gt;
When auditing data and databases, it’s often necessary to check the boundaries of values or to set them. &lt;br /&gt;
I’ve recently become very fond of Enumerable.Range because it offers a lot of convenience when dealing with certain types of ranges and can allow a fair amount of complexity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For instance:&lt;/strong&gt;&lt;br /&gt;
If I need to represent a range of integers from 3 to 17, I could use the construct: &lt;font color="#2b91af" size="4"&gt;&lt;font color="#2b91af" size="4"&gt;Enumerable&lt;/font&gt;&lt;/font&gt;&lt;font size="4"&gt;.Range(3, 15); &lt;/font&gt;&lt;font color="#008000" size="4"&gt;&lt;font color="#008000" size="4"&gt;//3-17&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;
If I need to represent a range of integers from 22 to 24I could use the construct: &lt;font color="#2b91af" size="4"&gt;&lt;font color="#2b91af" size="4"&gt;Enumerable&lt;/font&gt;&lt;/font&gt;&lt;font size="4"&gt;.Range(22, 3); &lt;/font&gt;&lt;font color="#008000" size="4"&gt;&lt;font color="#008000" size="4"&gt;//22-24&lt;/font&gt; &lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
…and so on.&lt;br /&gt;
&lt;br /&gt;
Also, I can merge those two non-contiguous ranges with: &lt;font size="4"&gt;&lt;font size="4"&gt;&lt;font size="4"&gt;Enumerable&lt;/font&gt;&lt;/font&gt;&lt;font size="4"&gt;.Range(3, 15).Union(&lt;/font&gt;&lt;font size="4"&gt;&lt;font size="4"&gt;Enumerable&lt;/font&gt;&lt;/font&gt;&lt;font size="4"&gt;.Range(22, 3)); &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;resulting in [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,22,23,24]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;I can also use the  Enumerable set operations for comparisons like:&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Contains(), Intersect(), Union(), Except(), etc. &lt;br /&gt;
and a host of other methods included in the class.&lt;/p&gt;
&lt;p&gt;The most common action I do with sets and ranges is just a comparison for inclusion or exclusion. &lt;br /&gt;
This is of great benefit when comparing a list of numbers to a given &lt;br /&gt;
Where I would have previously used Enumerable.Contains(with lambda) to compare a list to a range, &lt;br /&gt;
I now use Enumerable.Intersect() as it is easiest to code in all four languages. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For carriage-return/linefeeds, I chose to use the Environment.NewLine to avoid having to change the string for each language &lt;br /&gt;
using “\n” for some and Chr(10) for VB.&lt;/p&gt;
&lt;p&gt;For brevity with the C++, I put the classes in the .cpp file instead of putting the headers in a .h file.&lt;/p&gt;
&lt;p&gt;Here are some examples:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C# Calling Program:&lt;/strong&gt;&lt;/p&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;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt;//&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; EnumerableTest_CPP;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; EnumerableTest_CS;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; EnumerableTest_FS;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; EnumerableTest_VB;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; CS_Test_2008_Sept_2010&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;   &lt;span class="kwrd"&gt;class&lt;/span&gt; CCS_Test_2008_Sept_2010&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;      &lt;span class="kwrd"&gt;static&lt;/span&gt; IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; i_eRange1 = Enumerable.Range(3, 15); &lt;span class="rem"&gt;//3-17&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;      &lt;span class="kwrd"&gt;static&lt;/span&gt; IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; i_eRange2 = Enumerable.Range(22, 3); &lt;span class="rem"&gt;//22-24&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;      &lt;span class="rem"&gt;/************************[or this]***************************\&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="rem"&gt;      static IEnumerable&amp;lt;int&amp;gt; i_e =&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="rem"&gt;         Enumerable.Range(3, 15).Union(Enumerable.Range(22, 3));&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="rem"&gt;      \************************************************************/&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;      &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; lst_intList = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;() {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            1,2,3,15,23,77,23,21,8,104,18,19,17&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;      };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &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;  26:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;         IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; i_eRange = i_eRange1.Union(i_eRange2);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;         CEnumerableTest_CPP.TestEnumerable(lst_intList, i_eRange, 23);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;         CEnumerableTest_FS.TestEnumerable(lst_intList, i_eRange, 23);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;         CEnumerableTest_CS.TestEnumerable(lst_intList, i_eRange, 23);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;         CEnumerableTest_VB.TestEnumerable(lst_intList, i_eRange, 23);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C++ class Library:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;#include &lt;span class="str"&gt;"stdafx.h"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;#include &lt;span class="str"&gt;"EnumerableTest.h"&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; EnumerableTest;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System::Collections::Generic;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &lt;span class="kwrd"&gt;namespace&lt;/span&gt; System::Linq;&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;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; EnumerableTest_CPP {&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;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CEnumerableTest_CPP&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;span class="kwrd"&gt;public&lt;/span&gt;:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; TestEnumerable(List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^ lst_intFred, IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^ eFred, &lt;span class="kwrd"&gt;int&lt;/span&gt; iTarget);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;};&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CCompareInt : IComparer&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt;:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Compare(&lt;span class="kwrd"&gt;int&lt;/span&gt; i1, &lt;span class="kwrd"&gt;int&lt;/span&gt; i2)    { &lt;span class="kwrd"&gt;return&lt;/span&gt; i1.CompareTo(i2); }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;};&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; getInt(&lt;span class="kwrd"&gt;int&lt;/span&gt; iOrd1){ &lt;span class="kwrd"&gt;return&lt;/span&gt; iOrd1;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;String^ IntToString(&lt;span class="kwrd"&gt;int&lt;/span&gt; iChoice){ &lt;span class="kwrd"&gt;return&lt;/span&gt; iChoice.ToString(); }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; CEnumerableTest_CPP::TestEnumerable(List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^ lst_intList, IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;^ i_eRange, &lt;span class="kwrd"&gt;int&lt;/span&gt; iTarget)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    Console::WriteLine(Environment::NewLine +&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="str"&gt;"i_eRange {0:G} my target number"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        Enumerable::Contains(i_eRange, iTarget) ? &lt;span class="str"&gt;"contains"&lt;/span&gt; : &lt;span class="str"&gt;"does not contain"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;    Console::WriteLine(&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="str"&gt;"Display all numbers in lst_intList that are included"&lt;/span&gt; + Environment::NewLine + &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="str"&gt;" in the {0:G} digits of i_eRange ranged from {1:G} to {2:G}"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        Enumerable::Count(i_eRange), Enumerable::Min(i_eRange),&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        Enumerable::Max(i_eRange)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        );&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    Console::WriteLine(&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        String::Join(&lt;span class="str"&gt;","&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            Enumerable::ToArray&amp;lt;String^&amp;gt;(&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                Enumerable::Select( &lt;span class="rem"&gt;// to convert for the String::Join&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                Enumerable::OrderBy(&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                Enumerable::Intersect(i_eRange, lst_intList),    &lt;span class="rem"&gt;// Intersect&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                        gcnew Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;,&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(getInt)),    &lt;span class="rem"&gt;// OrderBy&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                        gcnew Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, String^&amp;gt;(IntToString)    &lt;span class="rem"&gt;// Select&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                )    &lt;span class="rem"&gt;// Select&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            )    &lt;span class="rem"&gt;// ToArray&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        )    &lt;span class="rem"&gt;// Join&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;    );    &lt;span class="rem"&gt;// WriteLine&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;F# class Library:&lt;/strong&gt;&lt;/p&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;namespace&lt;/span&gt; EnumerableTest_FS&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;font color="#0000ff"&gt;open&lt;/font&gt; System&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;font color="#0000ff"&gt;open&lt;/font&gt; System.Collections.Generic&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;font color="#0000ff"&gt;open&lt;/font&gt; System.Linq&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;module&lt;/span&gt; CEnumerableTest_FS =&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;let&lt;/span&gt; getInt(i1:int) : int =  i1&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;let&lt;/span&gt; IntToString(i:int) : &lt;span class="kwrd"&gt;String&lt;/span&gt; = i.ToString()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        //&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;let&lt;/span&gt; TestEnumerable(lst_intList:List&amp;lt;int&amp;gt;)(i_eRange:IEnumerable&amp;lt;int&amp;gt;)(iTarget:int) =&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            Console.WriteLine(Environment.NewLine +&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                &lt;span class="str"&gt;"i_eRange {0:G} my target number"&lt;/span&gt;, &lt;font color="#008080"&gt;//ternary &lt;span class="kwrd"&gt;in&lt;/span&gt; F#&lt;/font&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                (&lt;span class="kwrd"&gt;if&lt;/span&gt; Enumerable.Contains(i_eRange, iTarget)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;then&lt;/span&gt; &lt;span class="str"&gt;"contains"&lt;/span&gt; &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="str"&gt;"does not contain"&lt;/span&gt;))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            Console.WriteLine(&lt;span class="str"&gt;"Display all numbers in lst_intList that are included"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                + Environment.NewLine + &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                &lt;span class="str"&gt;" in the {0:G} digits of i_eRange ranged from {1:G} to {2:G}"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                Enumerable.Count(i_eRange), Enumerable.Min(i_eRange),&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                Enumerable.Max(i_eRange)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                );&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            Console.WriteLine(&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                &lt;span class="kwrd"&gt;String&lt;/span&gt;.Join(&lt;span class="str"&gt;","&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                    Enumerable.&lt;span class="kwrd"&gt;Select&lt;/span&gt;(&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                        Enumerable.OrderBy(&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                            Enumerable.Intersect(lst_intList, i_eRange),// Intersect&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;new&lt;/span&gt; Func&amp;lt;int,int&amp;gt;(getInt)),// OrderBy&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;new&lt;/span&gt; Func&amp;lt;int, &lt;span class="kwrd"&gt;String&lt;/span&gt;&amp;gt;(IntToString)).ToArray()))// Select&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C# class Library:&lt;/strong&gt;&lt;/p&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;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&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;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; EnumerableTest_CS&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CEnumerableTest_CS&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;      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; TestEnumerable(List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; lst_intList, IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; i_eRange, &lt;span class="kwrd"&gt;int&lt;/span&gt; iTarget)&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(&lt;span class="str"&gt;"i_eRange {0:G} my target number"&lt;/span&gt;, i_eRange.Contains(23) ? &lt;span class="str"&gt;"contains"&lt;/span&gt; : &lt;span class="str"&gt;"does not contain"&lt;/span&gt;);&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.WriteLine(&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="str"&gt;"Display all numbers in lst_intList that are included"&lt;/span&gt; + Environment.NewLine +&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            &lt;span class="str"&gt;" in the {0:G} digits of i_eRange ranged from {1:G} to {2:G}"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            i_eRange.Count(), i_eRange.Min(), i_eRange.Max()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            );&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;         Console.WriteLine(&lt;span class="str"&gt;"{0:G}"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt;.Join(&lt;span class="str"&gt;","&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;               lst_intList.Distinct().OrderBy(i =&amp;gt; i)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                  .Intersect(i_eRange)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                  .Select(i =&amp;gt; i.ToString())&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                  .ToArray()));&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VB class Library:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;Public Class CEnumerableTest_VB&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    Public Shared Sub TestEnumerable(ByVal lst_intList As List(Of Integer), ByVal i_eRange As IEnumerable(Of Integer), ByVal iTarget As Integer)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        Console.WriteLine( _&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            Environment.NewLine + _&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="str"&gt;"i_eRange {0:G} my target number"&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            If(i_eRange.Contains(23), &lt;span class="str"&gt;"contains"&lt;/span&gt;, &lt;span class="str"&gt;"does not contain"&lt;/span&gt;))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        Console.WriteLine( _&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="str"&gt;"Display all numbers in lst_intList that are included"&lt;/span&gt; + Environment.NewLine + _&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="str"&gt;" in the {0:G} digits of i_eRange ranged from {1:G} to {2:G}"&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        i_eRange.Count(), i_eRange.Min(), i_eRange.Max())&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.WriteLine(&lt;span class="str"&gt;"{0:G}"&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            String.Join(&lt;span class="str"&gt;","&lt;/span&gt;, _&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            lst_intList.Distinct().OrderBy(Function(i) i) _&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            .Intersect(i_eRange) _&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            .Select(Function(i) i.ToString()) _&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            .ToArray()))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    End Sub&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;End Class&lt;/pre&gt;
&lt;pre&gt;
 &lt;/pre&gt;
&lt;pre&gt;
 &lt;/pre&gt;
&lt;pre&gt;&lt;strong&gt;OUTPUT from the run:&lt;/strong&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;a rel="lightbox" href="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/PlayingwithIEnumerable.RangeSystem.Linq_D288/Enumerable.Range_2.jpg"&gt;&lt;img title="Enumerable.Range" border="0" alt="Enumerable.Range" width="472" height="291" style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" src="http://geekswithblogs.net/images/geekswithblogs_net/THines01/WindowsLiveWriter/PlayingwithIEnumerable.RangeSystem.Linq_D288/Enumerable.Range_thumb.jpg" /&gt;&lt;/a&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/141686.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/141686.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/141686.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/141686.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Packing a DBF</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/03/23/packdbf.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/03/23/packdbf.aspx</id>
        <published>2010-03-23T11:37:31-05:00:00</published>
        <updated>2010-03-23T13:45:34Z</updated>
        <summary type="html">I thought my days of dealing with DBFs as a "production data" source were over, but HA (no such luck).
Here is a method of using the FoxPro ODBC driver to Pack a DBF file (removing deleted content from the repository).</summary>
        <content type="html">&lt;p&gt;I thought my days of dealing with &lt;a title="(Wikipedia) DBASE file format database" target="_blank" href="http://en.wikipedia.org/wiki/Dbf#File_formats"&gt;DBF&lt;/a&gt;s as a "production data" source were over, but HA (no such luck).&lt;br /&gt;
I recently had to retrieve, modify and replace some data that needed to be delivered in a DBF file.&lt;/p&gt;
&lt;p&gt;Everything was fine until I realized / remembered the DBF driver does not ACTUALLY delete records from the data source -- it only marks them for deletion.  You are responsible for handling the "chaff" either by using a utility to remove deleted records or by simply ignoring them.  If imported into Excel, the marked-deleted records are ignored, but the file size will reflect the extra content.  After several rounds of testing &lt;a title="(Wikipedia) Create, Read, Update and Delete" target="_blank" href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete"&gt;CRUD&lt;/a&gt;, the output DBF was huge.&lt;/p&gt;
&lt;p&gt;So, I went hunting for a method to "Pack" the records (removing deleted ones and resizing the DBF file) and eventually ran across the FOXPRO driver at ( &lt;font color="#008000"&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vfoxpro/bb190233.aspx"&gt;http://msdn.microsoft.com/en-us/vfoxpro/bb190233.aspx&lt;/a&gt;&lt;font color="#000000"&gt; ).  Once installed, I changed the DSN in the code to the new one I created in the ODBC Administrator and ran some tests. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using &lt;a title="Use MSQuery To Retrieve External Data" target="_blank" href="http://office.microsoft.com/en-us/excel/HA100996641033.aspx"&gt;Microsoft Query&lt;/a&gt;, I simply tested the raw SQL command Pack {tablename} and it WORKED!&lt;br /&gt;
One really neat thing is the PACK command is used like regular SQL instructions; "Pack {tablename}" is all that is needed.&lt;br /&gt;
It is necessary, however, to close all connections to the database (and re-open) before issuing the PACK command or you will get the "File is in use" error. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: gray; font-size: 8pt; mso-bidi-font-size: 12.0pt; mso-no-proof: yes"&gt;&lt;font color="#000000" size="2" face="Arial"&gt;Here is some C# code for a Pack method.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: gray; font-size: 8pt; mso-bidi-font-size: 12.0pt; mso-no-proof: yes"&gt; &lt;br /&gt;
      &lt;span style="line-height: 115%; font-family: 'Courier New'; color: gray; font-size: 8pt; mso-bidi-font-size: 12.0pt; mso-no-proof: yes"&gt;///&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: green; font-size: 8pt; mso-bidi-font-size: 12.0pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: gray; font-size: 8pt; mso-bidi-font-size: 12.0pt; mso-no-proof: yes"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 12.0pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Pack the DBF removing all deleted records&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name="strTableName"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The table to pack&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name="strError"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;output of any errors&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;bool (true if no errors)&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; Pack(&lt;span style="color: blue"&gt;string&lt;/span&gt; strTableName, &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; strError)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;bool&lt;/span&gt; blnRetVal = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;try&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;OdbcConnectionStringBuilder&lt;/span&gt; csbOdbc = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;OdbcConnectionStringBuilder&lt;/span&gt;()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;          &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;Dsn = &lt;span style="color: #a31515"&gt;"PSAP_FOX_DBF"&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;};&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; strSQL = &lt;span style="color: #a31515"&gt;"pack "&lt;/span&gt; + strTableName;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;OdbcConnection&lt;/span&gt; connOdbc = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;OdbcConnection&lt;/span&gt;(csbOdbc.ToString()))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;connOdbc.Open();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #2b91af"&gt;OdbcCommand&lt;/span&gt; cmdOdbc = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;OdbcCommand&lt;/span&gt;(strSQL, connOdbc);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;cmdOdbc.ExecuteNonQuery();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;connOdbc.Close();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; exc)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;blnRetVal = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;strError = exc.Message;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; blnRetVal;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/138751.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/138751.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/138751.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/138751.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Geek Quiz</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/03/22/138717.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/03/22/138717.aspx</id>
        <published>2010-03-22T12:03:09-05:00:00</published>
        <updated>2010-03-22T12:04:08Z</updated>
        <content type="html">&lt;p&gt;&lt;a style="width: 268px; display: block; background: url(http://www.oneplusyou.com/bb/css/img/quiz/geek_badge.jpg) no-repeat; height: 82px; text-decoration: none" href="http://www.oneplusyou.com/bb/geek"&gt;&lt;span style="padding-left: 125px; display: block; font-family: Arial; color: #000; font-size: 22px; padding-top: 28px"&gt;70% Geek&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/138717.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/138717.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/138717.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/138717.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Calling An ASMX Web Service From Different Languages</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/03/07/callws.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/03/07/callws.aspx</id>
        <published>2010-03-07T22:07:25-06:00:00</published>
        <updated>2010-05-18T12:57:22Z</updated>
        <summary type="html">Here are some examples of calling a particular ASMX Web Service from different languages.</summary>
        <content type="html">&lt;p&gt;[Switch to "Elastic Layout" to see this properly.]&lt;/p&gt;
&lt;p&gt;I get a lot of mileage using Web Services inside an intranet.  I sometimes need to cross operating systems and languages to take advantage of pre-written services.  One issue I've run across is the need to find the correct syntax in different languages that will generate a correct result.  Some implementations are really easy and others require some delicate, precision work in order for them to respond correctly.  Once written, however, they are consistent in their performance.&lt;/p&gt;
&lt;p&gt;In this example, I've taken a minor Web Service (function: GetWeather(String City)) that returns random weather information when given a city.  This is just for fun and to test parameters on Web Service calls.  The service is at:&lt;/p&gt;
&lt;p style="margin-left: 40px"&gt;http://www.deeptraining.com/webservices/weather.asmx&lt;/p&gt;
&lt;p&gt;This page has no HTML test page built for it, so your actual call will need to be the entity performing the test.&lt;/p&gt;
&lt;p&gt;When a successful call is given, the responses are in the range of:  Rain, Sunny, Partly Cloudy, Cloudy, etc.&lt;br /&gt;
Here is a sample result of three runs from the Ruby version:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Graphic of Ruby Result" width="300" height="191" src="/images/geekswithblogs_net/THines01/WebServiceCall/OutputRuby.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;If anyone wants to create the Scala and/or Python versions (before I do), I will gladly post them here.&lt;/p&gt;
&lt;p&gt;FYI: Perl and Java were the most difficult  / cumbersome and C++ was the easiest.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;strong&gt;Here is the PHP version&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: #548dd4; font-size: 8pt; mso-bidi-font-size: 11.0pt; mso-themecolor: text2; mso-themetint: 153"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;php&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #548dd4; mso-themecolor: text2; mso-themetint: 153"&gt;function&lt;/span&gt; doWebService&lt;span style="color: red"&gt;()&lt;/span&gt;&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;########################################################################&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;# Do some SOAP / Call a Web Service&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;$client = &lt;span style="color: #548dd4; mso-themecolor: text2; mso-themetint: 153"&gt;new&lt;/span&gt; SoapClient&lt;span style="color: red"&gt;(&lt;/span&gt;"http://www.deeptraining.com/webservices/weather.asmx?WSDL"&lt;span style="color: red"&gt;)&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;$strWeather = $client-&amp;gt;GetWeather&lt;span style="color: red"&gt;(&lt;/span&gt;&lt;span style="color: #548dd4; mso-themecolor: text2; mso-themetint: 153"&gt;array&lt;/span&gt;&lt;span style="color: red"&gt;(&lt;/span&gt;'City' =&amp;gt; 'Murfreesboro'&lt;span style="color: red"&gt;))&lt;/span&gt;-&amp;gt;GetWeatherResult;&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: #548dd4; mso-themecolor: text2; mso-themetint: 153"&gt;echo&lt;/span&gt; $strWeather . "\nDone";&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
doWebService&lt;span style="color: red"&gt;()&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: #548dd4; mso-themecolor: text2; mso-themetint: 153"&gt;?&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the Ruby version&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;require 'soap/wsdlDriver' # Include the soap driver&lt;br /&gt;
require 'SuppressWarning' # Suppress the soap unused param warning&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;################################################################################&lt;br /&gt;
# Call to a web service on the Internet (passing a parameter)&lt;br /&gt;
def   doWebService()&lt;br /&gt;
   # Instantiate a soap driver for the given service and NameSpace&lt;br /&gt;
   # Call the return from the driver creation, pass it a parameter and &lt;br /&gt;
   # Append "Done" to the end of that&lt;br /&gt;
   # of course, this is now unReadable...&lt;br /&gt;
   puts (&lt;br /&gt;
      soap = suppress_warning {&lt;br /&gt;
         SOAP::WSDLDriverFactory.new(&lt;br /&gt;
            'http://www.deeptraining.com/webservices/weather.asmx?WSDL'&lt;br /&gt;
            ).create_rpc_driver&lt;br /&gt;
         }&lt;br /&gt;
      ).getWeather({'City' =&amp;gt; 'Murfreesboro'}).getWeatherResult+"\nDone"&lt;br /&gt;
end&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;doWebService()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;----------------------------[SuppressWarning.rb]----------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-fareast-font-family: Calibri; mso-bidi-font-size: 11.0pt; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;def suppress_warning&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;back = $VERBOSE&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;$VERBOSE = nil&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;begin&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;yield&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;ensure&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;$VERBOSE = back&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;end&lt;br /&gt;
end&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt; &lt;/p&gt;
&lt;div class="MsoNormal" style="text-align: center; line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="center"&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 9pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;hr size="2" width="100%" align="center" /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the Perl version:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;## WORKS as of 03/06/2010&lt;br /&gt;
use strict; &lt;br /&gt;
use SOAP::Lite; &lt;br /&gt;
&lt;br /&gt;
###############################################################################&lt;br /&gt;
sub doWebService()&lt;br /&gt;
{&lt;br /&gt;
   my $FUNCTION      = 'GetWeather';&lt;br /&gt;
   my $strParamName  = 'City';&lt;br /&gt;
   my $strParamValue = 'Murfreesboro';&lt;br /&gt;
   my $strNamespace  = 'http://litwinconsulting.com/webservices';&lt;br /&gt;
&lt;br /&gt;
   #############################################################################&lt;br /&gt;
   # Set the value of ACTION to the value you need passed in the&lt;br /&gt;
   # SOAPAction header &lt;br /&gt;
   # Init the WebService &lt;br /&gt;
   my $soap = SOAP::Lite &lt;br /&gt;
      -&amp;gt;proxy('http://www.deeptraining.com/webservices/weather.asmx') &lt;br /&gt;
      -&amp;gt;on_action(sub { return "$strNamespace/$FUNCTION"; } )&lt;br /&gt;
      -&amp;gt;ns("$strNamespace/"); &lt;br /&gt;
&lt;br /&gt;
   #####################&lt;br /&gt;
   # Call the WebService &lt;br /&gt;
   my $resp = $soap-&amp;gt;call( &lt;br /&gt;
      SOAP::Data-&amp;gt;name("$FUNCTION")-&amp;gt;attr({xmlns =&amp;gt; "$strNamespace/"}), &lt;br /&gt;
      SOAP::Data-&amp;gt;name($strParamName =&amp;gt; $strParamValue)&lt;br /&gt;
      ); &lt;br /&gt;
&lt;br /&gt;
   #########################################################&lt;br /&gt;
   # Since the result comes back as a string, just print it. &lt;br /&gt;
   return $resp-&amp;gt;result(); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print &amp;amp;doWebService();&lt;br /&gt;
print "\nDone\n";&lt;/span&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="MsoNormal" style="text-align: center; line-height: normal; margin: 0in 0in 0pt" align="center"&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 9pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;hr size="2" width="100%" align="center" /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the Java version:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;import java.util.*;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.net.URLConnection;&lt;br /&gt;
import java.net.MalformedURLException;&lt;br /&gt;
&lt;br /&gt;
import org.apache.axis.client.Call;&lt;br /&gt;
import org.apache.axis.client.Service;&lt;br /&gt;
import org.apache.axis.encoding.XMLType;&lt;br /&gt;
import javax.xml.namespace.QName;&lt;br /&gt;
import javax.xml.rpc.NamespaceConstants;&lt;br /&gt;
import javax.xml.rpc.ParameterMode;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;doWebService&lt;br /&gt;
&lt;/span&gt;{&lt;br /&gt;
      &lt;span style="color: blue"&gt;public&lt;/span&gt;      &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; doWebServiceCall()&lt;br /&gt;
      {&lt;br /&gt;
            &lt;span style="color: blue"&gt;try&lt;br /&gt;
&lt;/span&gt;            {&lt;br /&gt;
                  &lt;span style="color: green"&gt;////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;                  &lt;span style="color: green"&gt;// Responds the same with or without the ?WSDL&lt;br /&gt;
&lt;/span&gt;                  String      strEndPoint       = &lt;span style="color: #a31515"&gt;"http://www.deeptraining.com/webservices/weather.asmx"&lt;/span&gt;;&lt;br /&gt;
                  String      strSoapAction     = &lt;span style="color: #a31515"&gt;"http://litwinconsulting.com/webservices/GetWeather"&lt;/span&gt;;&lt;br /&gt;
                  String      strSchemaURL      = &lt;span style="color: #a31515"&gt;"http://litwinconsulting.com/webservices/"&lt;/span&gt;;&lt;br /&gt;
                  String      strParamName1     = &lt;span style="color: #a31515"&gt;"City"&lt;/span&gt;;&lt;br /&gt;
                  String      strParameterVal1= &lt;span style="color: #a31515"&gt;"Murfreesboro"&lt;/span&gt;;&lt;br /&gt;
                  String      strFunctionName   = &lt;span style="color: #a31515"&gt;"GetWeather"&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
                  &lt;span style="color: green"&gt;//Call      call   = (Call) new Service().createCall();//Works&lt;br /&gt;
&lt;/span&gt;                  Call  call   = &lt;span style="color: blue"&gt;new&lt;/span&gt; Call(strEndPoint);&lt;span style="color: green"&gt;//Works same&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;                  &lt;span style="color: green"&gt;////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;                  &lt;span style="color: green"&gt;// first parameter in QName seemingly takes ANYTHING&lt;br /&gt;
&lt;/span&gt;                  call.setOperationName(&lt;span style="color: blue"&gt;new&lt;/span&gt; QName(strSchemaURL, strFunctionName));&lt;br /&gt;
&lt;br /&gt;
                  &lt;span style="color: green"&gt;////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;                  &lt;span style="color: green"&gt;// Set the name of the parameter and the return type&lt;br /&gt;
&lt;/span&gt;                  call.setReturnType(XMLType.XSD_STRING);&lt;br /&gt;
                  call.addParameter(&lt;span style="color: blue"&gt;new&lt;/span&gt; QName(strSchemaURL,strParamName1), XMLType.XSD_STRING, ParameterMode.IN);&lt;br /&gt;
                  &lt;span style="color: green"&gt;//&lt;br /&gt;
&lt;/span&gt;                  &lt;span style="color: green"&gt;////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;                  &lt;span style="color: green"&gt;// Catch the result and print it&lt;br /&gt;
&lt;/span&gt;                  &lt;span style="color: green"&gt;// Parameter count is now ONE (1).&lt;br /&gt;
&lt;/span&gt;                  call.setSOAPActionURI(strSoapAction);&lt;span style="color: green"&gt;//Yes Necessary&lt;br /&gt;
&lt;/span&gt;                  String      strResult = (String) call.invoke(&lt;span style="color: blue"&gt;new&lt;/span&gt; Object[] {strParameterVal1});&lt;br /&gt;
                  System.&lt;span style="color: blue"&gt;out&lt;/span&gt;.println(&lt;span style="color: #a31515"&gt;"Result='"&lt;/span&gt; + strResult + &lt;span style="color: #a31515"&gt;"'"&lt;/span&gt;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;span style="color: blue"&gt;catch&lt;/span&gt; (Exception e)&lt;br /&gt;
            {&lt;br /&gt;
                  e.printStackTrace();&lt;br /&gt;
                  System.err.println(e.toString());&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt;     &lt;span style="color: blue"&gt;void&lt;/span&gt; main(String[] args)&lt;br /&gt;
      {&lt;br /&gt;
            &lt;span style="color: green"&gt;////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;            &lt;span style="color: green"&gt;//    6 Call a Web service (with parameters)&lt;br /&gt;
&lt;/span&gt;            doWebServiceCall();&lt;br /&gt;
      }&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;}&lt;/span&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="MsoNormal" style="text-align: center; line-height: normal; margin: 0in 0in 0pt" align="center"&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 9pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;hr size="2" width="100%" align="center" /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the C++ version (once the WS is added to the project):&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; color: green; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;// doWebService_CPP.h&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: blue; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;#pragma&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;span style="color: blue"&gt;once&lt;br /&gt;
using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; WS_WEATHER;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; doWebService_CPP {&lt;br /&gt;
&lt;br /&gt;
       &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; CDoWebService_CPP&lt;br /&gt;
       {&lt;br /&gt;
       &lt;span style="color: blue"&gt;public&lt;/span&gt;:&lt;br /&gt;
              &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoWebService(&lt;span style="color: blue"&gt;void&lt;/span&gt;)&lt;br /&gt;
              {&lt;br /&gt;
                     Weather^ svcWeather = &lt;span style="color: blue"&gt;gcnew&lt;/span&gt; Weather();&lt;br /&gt;
                     Console::WriteLine(svcWeather-&amp;gt;GetWeather(&lt;span style="color: #a31515"&gt;"Murfreesboro"&lt;/span&gt;)  + &lt;span style="color: #a31515"&gt;"\nDone"&lt;/span&gt;);&lt;br /&gt;
              }&lt;br /&gt;
       };&lt;br /&gt;
}&lt;/span&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="MsoNormal" style="text-align: center; line-height: normal; margin: 0in 0in 0pt" align="center"&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 9pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;hr size="2" width="100%" align="center" /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the VB version (once the WS is added to the project):&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; color: blue; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;Public&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;span style="color: blue"&gt;Class&lt;/span&gt; CDoWebService_VB&lt;br /&gt;
   &lt;span style="color: blue"&gt;Public&lt;/span&gt; &lt;span style="color: blue"&gt;Shared&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; DoWebService()&lt;br /&gt;
      &lt;span style="color: blue"&gt;Dim&lt;/span&gt; svcWeather &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;New&lt;/span&gt; WS_WEATHER.Weather()&lt;br /&gt;
      Console.WriteLine(svcWeather.GetWeather(&lt;span style="color: #a31515"&gt;"Murfreesboro"&lt;/span&gt;) &amp;amp; Chr(10) &amp;amp; &lt;span style="color: #a31515"&gt;"Done"&lt;/span&gt;)&lt;br /&gt;
   &lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;br /&gt;
End&lt;/span&gt; &lt;span style="color: blue"&gt;Class&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 9pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="MsoNormal" style="text-align: center; line-height: normal; margin: 0in 0in 0pt" align="center"&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 9pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;hr size="2" width="100%" align="center" /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the C# version (once the WS is added to the project):&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family: 'Courier New'; color: blue; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt; mso-fareast-font-family: 'Times New Roman'"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; doWebService_CS.WS_WEATHER;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; doWebService_CS&lt;br /&gt;
{&lt;br /&gt;
   &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CDoWebService_CS&lt;br /&gt;
&lt;/span&gt;   {&lt;br /&gt;
      &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoWebService()&lt;br /&gt;
      {&lt;br /&gt;
         Weather svcWeather = &lt;span style="color: blue"&gt;new&lt;/span&gt; Weather();&lt;br /&gt;
         &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(svcWeather.GetWeather(&lt;span style="color: #a31515"&gt;"Murfreesboro"&lt;/span&gt;) + &lt;span style="color: #a31515"&gt;"\nDone"&lt;/span&gt;);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;/span&gt;&lt;span style="font-family: 'Times New Roman','serif'; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:WordDocument&gt;
&lt;w:View&gt;Normal&lt;/w:View&gt;
&lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
&lt;w:TrackMoves /&gt;
&lt;w:TrackFormatting /&gt;
&lt;w:PunctuationKerning /&gt;
&lt;w:ValidateAgainstSchemas /&gt;
&lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
&lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
&lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
&lt;w:DoNotPromoteQF /&gt;
&lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
&lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
&lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
&lt;w:Compatibility&gt;
&lt;w:BreakWrappedTables /&gt;
&lt;w:SnapToGridInCell /&gt;
&lt;w:WrapTextWithPunct /&gt;
&lt;w:UseAsianBreakRules /&gt;
&lt;w:DontGrowAutofit /&gt;
&lt;w:SplitPgBreakAndParaMark /&gt;
&lt;w:DontVertAlignCellWithSp /&gt;
&lt;w:DontBreakConstrainedForcedTables /&gt;
&lt;w:DontVertAlignInTxbx /&gt;
&lt;w:Word11KerningPairs /&gt;
&lt;w:CachedColBalance /&gt;
&lt;/w:Compatibility&gt;
&lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
&lt;m:mathPr&gt;
&lt;m:mathFont m:val="Cambria Math" /&gt;
&lt;m:brkBin m:val="before" /&gt;
&lt;m:brkBinSub m:val="&amp;#45;-" /&gt;
&lt;m:smallFrac m:val="off" /&gt;
&lt;m:dispDef /&gt;
&lt;m:lMargin m:val="0" /&gt;
&lt;m:rMargin m:val="0" /&gt;
&lt;m:defJc m:val="centerGroup" /&gt;
&lt;m:wrapIndent m:val="1440" /&gt;
&lt;m:intLim m:val="subSup" /&gt;
&lt;m:naryLim m:val="undOvr" /&gt;
&lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"&gt;
&lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal" /&gt;
&lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 1" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 2" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 3" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 4" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 5" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 6" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 7" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 8" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 9" /&gt;
&lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /&gt;
&lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title" /&gt;
&lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /&gt;
&lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /&gt;
&lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong" /&gt;
&lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /&gt;
&lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /&gt;
&lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /&gt;
&lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title" /&gt;
&lt;w:LsdException Locked="false" Priority="37" Name="Bibliography" /&gt;
&lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /&gt;
&lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: Courier New"&gt;Here is the PowerShell version (borrowing from the C# version):&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: #00b050; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;################################################################################&lt;br /&gt;
# Instead of attempting to dynamically reference a WebService, I leveraged the&lt;br /&gt;
# existing connection through a DLL created in C# in an earlier example.&lt;br /&gt;
# This example shows the loading of the DLL&lt;br /&gt;
# how to call a static method with PowerShell&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br /&gt;
&lt;span style="color: red"&gt;[&lt;/span&gt;void&lt;span style="color: red"&gt;]&lt;/span&gt;&lt;span style="color: red"&gt;[&lt;/span&gt;Reflection.Assembly&lt;span style="color: red"&gt;]&lt;/span&gt;::LoadFile&lt;span style="color: red"&gt;(&lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: #92d050"&gt;"c:\science\managed\doWebService_CS\bin\Debug\doWebService_CS.dll"&lt;/span&gt;&lt;span style="color: red"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red"&gt;[&lt;/span&gt;doWebService_CS.CDoWebService_CS&lt;span style="color: red"&gt;]&lt;/span&gt;::DoWebService&lt;span style="color: red"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;span style="color: red"&gt;&lt;font color="#000000"&gt;## For a more thorough look at PowerShell and WebServices, check:&lt;/font&gt; &lt;a target="_blank" href="http://poshcode.org/538"&gt;http://poshcode.org/538&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/138386.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/138386.aspx</wfw:comment>
        <slash:comments>7</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/138386.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/138386.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Cross-language Extension Method Calling</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/03/05/extensionsparttwo.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionsparttwo.aspx</id>
        <published>2010-03-05T17:22:11-06:00:00</published>
        <updated>2010-04-26T08:43:59Z</updated>
        <summary type="html">In my last post, I showed how Extension methods can be created in the .NET 2.0 environment.
In this post, I discuss calling the extensions from other dot net languages.</summary>
        <content type="html">&lt;p&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Extension_method"&gt;Extension methods&lt;/a&gt; are a concise way of binding functions to particular types.&lt;/p&gt;
&lt;p&gt;In my last post, I showed how Extension methods can be created in the .NET 2.0 environment.&lt;br /&gt;
In this post, I discuss calling the extensions from other languages.&lt;/p&gt;
&lt;p&gt;Most of the differences I find between the Dot Net languages are mainly syntax.  The declaration of Extensions is no exception.  There is, however, a distinct difference with the framework accepting excensions made with C++ that differs from C# and VB. &lt;/p&gt;
&lt;p&gt;When calling the C++ extension from C#, the compiler will SOMETIMES say there is no definition for DoCPP with the error:&lt;br /&gt;
&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;'string' does not contain a definition for 'DoCPP' and no extension method 'DoCPP' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If I recompile, the error goes away.&lt;/p&gt;
&lt;p&gt;The strangest problem with calling the C++ extension from C# is that I first must make SOME type of reference to the class BEFORE using the extension or it will not be recognized at all.  So, if I first call the DoCPP() as a static method, the extension works fine later.  If I make a dummy instantiation of the class, it works.  If I have no forward reference of the class, I get the same error as before and recompiling does not fix it.  It seems as if this none of this is supposed to work across the languages.&lt;/p&gt;
&lt;p&gt;I have made a few work-arounds to get the examples to compile and run.&lt;/p&gt;
&lt;p&gt;Note the following examples:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Extension in C#&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt; System;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; Extension_CS&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CExtension_CS&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="color: green"&gt;//in C#, the "this" keyword is the key.&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoCS(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; str)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"CS\t{0:G}\tCS"&lt;/span&gt;, str);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Extension in C++&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: green; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;/****************************************************************************\&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* Here is the C++ implementation.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;It is the least elegant and most quirky,&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* but it works.&lt;br /&gt;
\****************************************************************************/&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;#pragma&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt; &lt;span style="color: blue"&gt;once&lt;br /&gt;
using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System::Runtime::CompilerServices;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt;&lt;span style="color: green"&gt;//&amp;lt;-Essential&lt;br /&gt;
// Reference: System.Core.dll //&amp;lt;- Essential&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; Extension_CPP {&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; CExtension_CPP&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;:&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;[Extension] &lt;span style="color: green"&gt;// or [ExtensionAttribute] /* either works */&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoCPP(String^ str)&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;Console::WriteLine(&lt;span style="color: #a31515"&gt;"C++\t{0:G}\tC++"&lt;/span&gt;, str);&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;};&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;Extension in VB&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Calling program in C#&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;/******************************************************************************\&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* Main calling program&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* Intellisense and VS2008 complain about the CPP implementation, but with a&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* little duct-tape, it works just fine.&lt;br /&gt;
\******************************************************************************/&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; Extension_CPP;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; Extension_CS;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; Extension_VB; &lt;span style="color: green"&gt;// virtual namespace&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; TestExtensions&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CTestExtensions&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;/**********************************************************************\&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;* For some reason, this needs a direct reference into the C++ version&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;* even though it does nothing than add a null reference.&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;* The constructor provides the fake usage to please the compiler.&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;\**********************************************************************/&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; CExtension_CPP x = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: green"&gt;// &amp;lt;-DUCT_TAPE!&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; CTestExtensions()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// Fake usage to stop compiler from complaining&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;null&lt;/span&gt; != x) {} &lt;span style="color: green"&gt;// &amp;lt;-DUCT_TAPE&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; strData = &lt;span style="color: #a31515"&gt;"from C#"&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strData.DoCPP();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strData.DoCS();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strData.DoVB();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Calling program in VB &lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; Calling program in C++&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;

&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;// TestExtensions_CPP.cpp : main project file.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;#include&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: #a31515"&gt;"stdafx.h"&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt;&lt;font color="#000000"&gt; System;&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt;&lt;font color="#000000"&gt; Extension_CPP;&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt;&lt;font color="#000000"&gt; Extension_CS;&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt;&lt;font color="#000000"&gt; Extension_VB;&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt; main(&lt;/font&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt;&lt;font color="#000000"&gt;)&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;/font&gt;&lt;span style="color: green"&gt;/*******************************************************\&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* Extension methods are called like static methods&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* when called from C++.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;There may be a difference in&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* syntax when calling the VB extension as VB Extensions&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;* are embedded in Modules instead of classes&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;\*******************************************************/&lt;br /&gt;
&lt;/span&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;String^ strData = &lt;/font&gt;&lt;span style="color: #a31515"&gt;"from C++"&lt;/span&gt;&lt;font color="#000000"&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;CExtension_CPP::DoCPP(strData);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;CExtension_CS::DoCS(strData);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;modExtension_VB::DoVB(strData); &lt;/font&gt;&lt;span style="color: green"&gt;//since Extensions go in Modules&lt;br /&gt;
&lt;/span&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;

&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;Imports&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt; Extension_CPP&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;Imports&lt;/span&gt;&lt;font color="#000000"&gt; Extension_CS&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;Imports&lt;/span&gt;&lt;font color="#000000"&gt; Extension_VB&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;Imports&lt;/span&gt;&lt;font color="#000000"&gt; System.Runtime.CompilerServices&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;Module&lt;/span&gt;&lt;font color="#000000"&gt; TestExtensions_VB&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&amp;lt;Extension()&amp;gt; _&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;Public&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Sub&lt;/span&gt;&lt;font color="#000000"&gt; DoCPP(&lt;/font&gt;&lt;span style="color: blue"&gt;ByVal&lt;/span&gt;&lt;font color="#000000"&gt; str &lt;/font&gt;&lt;span style="color: blue"&gt;As&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;String&lt;/span&gt;&lt;font color="#000000"&gt;)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;/font&gt;&lt;span style="color: green"&gt;'Framework does not treat this as an extension, so use the static&lt;br /&gt;
&lt;/span&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;CExtension_CPP.DoCPP(str)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Sub&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;   &lt;/font&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;Sub&lt;/span&gt;&lt;font color="#000000"&gt; Main()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;Dim&lt;/span&gt;&lt;font color="#000000"&gt; strData &lt;/font&gt;&lt;span style="color: blue"&gt;As&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;String&lt;/span&gt;&lt;font color="#000000"&gt; = &lt;/font&gt;&lt;span style="color: #a31515"&gt;"from VB"&lt;br /&gt;
&lt;/span&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;strData.DoCS()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;strData.DoVB()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;strData.DoCPP() &lt;/font&gt;&lt;span style="color: green"&gt;'fake&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;   &lt;/font&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Sub&lt;br /&gt;
End&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Module&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: green; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;' Here is the VB implementation.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;This is not as elegant as the C#, but it's&lt;br /&gt;
' functional.&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;Imports&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt; System.Runtime.CompilerServices&lt;br /&gt;
&lt;span style="color: green"&gt;'&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;Public&lt;/span&gt; &lt;span style="color: blue"&gt;Module&lt;/span&gt; modExtension_VB &lt;span style="color: green"&gt;'Extension methods can be defined only in modules.&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&amp;lt;Extension()&amp;gt; _&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;Public&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; DoVB(&lt;span style="color: blue"&gt;ByVal&lt;/span&gt; str &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;String&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Console.WriteLine(&lt;span style="color: #a31515"&gt;"VB"&lt;/span&gt; &amp;amp; Chr(9) &amp;amp; &lt;span style="color: #a31515"&gt;"{0:G}"&lt;/span&gt; &amp;amp; Chr(9) &amp;amp; &lt;span style="color: #a31515"&gt;"VB"&lt;/span&gt;, str)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;br /&gt;
End&lt;/span&gt; &lt;span style="color: blue"&gt;Module&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/138358.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/138358.aspx</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/138358.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/138358.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Extension Methods in Dot Net 2.0</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/03/05/extensionstwodotoh.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionstwodotoh.aspx</id>
        <published>2010-03-05T12:57:45-06:00:00</published>
        <updated>2010-03-05T13:37:21Z</updated>
        <summary type="html">Here is a short, simple method of harnessing Extension methods in Dot Net 2.0.  Please read the linked article first.</summary>
        <content type="html">&lt;p&gt;Not that anyone would still need this, but in case you have a situation where the code MUST be .NET 2.0 compliant and you want to use a cool feature like &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Extension_method"&gt;Extension methods&lt;/a&gt;, there is a way. &lt;/p&gt;
&lt;p&gt;I saw this article when looking for ways to create extension methods in C++, C# and VB:&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/magazine/cc163317.aspx"&gt; http://msdn.microsoft.com/en-us/magazine/cc163317.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The author shows a simple  way to declare/define the ExtensionAttribute so it's available to 2.0 .NET code.&lt;/p&gt;
&lt;p&gt;Please read the article to learn about the when and why and use the content below to learn HOW.&lt;br /&gt;
In the next post, I'll demonstrate cross-language calling of extension methods.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here is a version of it in C#&lt;/p&gt;
&lt;p&gt;First, here's the project showing there's no VOODOO included:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Picture of Project Workspace" width="256" height="307" src="/images/geekswithblogs_net/THines01/Extensions/ExtensionsTwoDotProject.jpg" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt; System;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; System.Runtime.CompilerServices&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;[&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: #2b91af"&gt;AttributeUsage&lt;/span&gt;(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;AttributeTargets&lt;/span&gt;.Assembly&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;| &lt;span style="color: #2b91af"&gt;AttributeTargets&lt;/span&gt;.Class&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;| &lt;span style="color: #2b91af"&gt;AttributeTargets&lt;/span&gt;.Method,&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;AllowMultiple = &lt;span style="color: blue"&gt;false&lt;/span&gt;, Inherited = &lt;span style="color: blue"&gt;false&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;]&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ExtensionAttribute&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Attribute&lt;/span&gt;{}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; TestTwoDotExtensions&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoThingCS(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; str)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"2.0\t{0:G}\t2.0"&lt;/span&gt;, str);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #a31515"&gt;"asdf"&lt;/span&gt;.DoThingCS();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;&lt;img border="1" alt="Picture of mouseover showing the Intellisense" width="373" height="155" src="/images/geekswithblogs_net/THines01/Extensions/ExtensionsTwoDotCode.jpg" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
Here is the C++ version:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;// TestTwoDotExtensions_CPP.h&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt;#pragma&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 14.0pt; mso-no-proof: yes"&gt; &lt;span style="color: blue"&gt;once&lt;br /&gt;
using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; System {&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; Runtime {&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; CompilerServices {&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;[&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;AttributeUsage(&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;AttributeTargets::Assembly&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;| AttributeTargets::Class&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;| AttributeTargets::Method,&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;AllowMultiple = &lt;span style="color: blue"&gt;false&lt;/span&gt;, Inherited = &lt;span style="color: blue"&gt;false&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;]&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; ExtensionAttribute : Attribute{};&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System::Runtime::CompilerServices;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; TestTwoDotExtensions_CPP {&lt;br /&gt;
&lt;span style="color: blue"&gt;&lt;br /&gt;
public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; CTestTwoDotExtensions_CPP&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;:&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;           &lt;/span&gt;[ExtensionAttribute] &lt;span style="color: green"&gt;// or [Extension]&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;           &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoThingCPP(String^ str)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Console::WriteLine(&lt;span style="color: #a31515"&gt;"2.0\t{0:G}\t2.0"&lt;/span&gt;, str);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
};&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/138357.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/138357.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/138357.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/138357.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Ruby-Like "times" method #ruby #csharp #linq #vb #cpp</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/03/03/times.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/03/03/times.aspx</id>
        <published>2010-03-03T14:07:05-06:00:00</published>
        <updated>2010-03-03T14:09:30Z</updated>
        <summary type="html">Here's the implementation of the Ruby-like "times" method that executes a block of code (n) times.</summary>
        <content type="html">&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Before I noticed how many other people had blogged about this same thing, I wrote an implementation of a "times" (integer extension) method -- the kind you'd find when coding in Ruby that is passed a block of code that it executes (n) times.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;br /&gt;
Consider the following (in Ruby):&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: #4f6228; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt; mso-themecolor: accent3; mso-themeshade: 128"&gt;#####################################&lt;br /&gt;
# prints: &lt;br /&gt;
#&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Ruby was here&lt;br /&gt;
#&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Ruby was here&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;br /&gt;
2.times &lt;span style="color: red"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;printf&lt;span style="color: red"&gt;(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"Ruby was here\n"&lt;/span&gt;&lt;span style="color: red"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #4f6228; mso-themecolor: accent3; mso-themeshade: 128"&gt;#####################################&lt;br /&gt;
# prints: &lt;br /&gt;
#&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Ruby was here 0&lt;br /&gt;
#&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Ruby was here 1&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
2.times &lt;span style="color: red"&gt;{&lt;/span&gt;|i|&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;printf&lt;span style="color: red"&gt;(&lt;/span&gt;&lt;span style="color: #a31515"&gt;"Ruby was here %d\n"&lt;/span&gt;, i&lt;span style="color: red"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: red"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;span style="color: red"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font color="#000000" size="2" face="Arial"&gt;The closest to this I got in C# was:&lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;span style="color: red"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font color="#000000" size="2" face="Arial"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;public&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoTest1()&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: green"&gt;/******************************************************\&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;* This technique is the actual goal of this exercise&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;\******************************************************/&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;2.times(DoWriteLine);&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: green"&gt;// &amp;lt;-GOAL!&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;2.times(DoWriteLineAndNum);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: green"&gt;// or&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;2.times(i =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"CSharp was here"&lt;/span&gt;));&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;2.times(i =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"CSharp was here: "&lt;/span&gt; + i));&lt;br /&gt;
}&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The C# class I created (with two extension methods) looks like this: &lt;br /&gt;
 &lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; RubyLike&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CRubyLike&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Performs an action i number of times&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name="i"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;number of times to repeat&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name="action"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;action to be repeated&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; times(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; i, &lt;span style="color: #2b91af"&gt;Action&lt;/span&gt; action)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Enumerable&lt;/span&gt;.Range(0, i).ToList().ForEach(n =&amp;gt; action());&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Performs an action i number of times passing the &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; repeat target as a parameter.&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Allowing: 5.times(n =&amp;gt; Console.Write("hey"));&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name="i"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;number of times to repeat&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name="action"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;action to be repeated&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; times(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; i, &lt;span style="color: #2b91af"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt; action)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;int&lt;/span&gt; iCount=0;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Enumerable&lt;/span&gt;.Range(0, i).ToList().ForEach(n =&amp;gt; action(iCount++));&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Here is the C++ Example&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: green; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;// TestRubyLike_CPP.h&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;#pragma&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; &lt;span style="color: blue"&gt;once&lt;br /&gt;
&lt;br /&gt;
using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; RubyLike;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; TestRubyLike_CPP {&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; CTestRubyLike_CPP&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt;:&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoWriteLine(&lt;span style="color: blue"&gt;void&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;{Console::WriteLine(&lt;span style="color: #a31515"&gt;"C++ was here"&lt;/span&gt;);}&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoWriteLine(&lt;span style="color: blue"&gt;int&lt;/span&gt; i)&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;{Console::WriteLine(&lt;span style="color: #a31515"&gt;"C++ was here "&lt;/span&gt;+ i.ToString());}&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;:&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoTest(&lt;span style="color: blue"&gt;void&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;CRubyLike::times(2, &lt;span style="color: blue"&gt;gcnew&lt;/span&gt; Action(DoWriteLine));&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;CRubyLike::times(2, &lt;span style="color: blue"&gt;gcnew&lt;/span&gt; Action&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;(DoWriteLine));&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;CRubyLike::times(2, &lt;span style="color: blue"&gt;gcnew&lt;/span&gt; Action(Console::WriteLine));&lt;span style="color: green"&gt;//blank/blank&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;CRubyLike::times(2, &lt;span style="color: blue"&gt;gcnew&lt;/span&gt; Action&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;(Console::WriteLine));&lt;span style="color: green"&gt;//0/1&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;};&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here is the VB Example:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;Imports&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; System&lt;br /&gt;
&lt;span style="color: blue"&gt;Imports&lt;/span&gt; RubyLike&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;Public&lt;/span&gt; &lt;span style="color: blue"&gt;Class&lt;/span&gt; CTestRubyLike_VB&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;Private&lt;/span&gt; &lt;span style="color: blue"&gt;Shared&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; DoWriteLine()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Console.WriteLine(&lt;span style="color: #a31515"&gt;"VB was here"&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;Private&lt;/span&gt; &lt;span style="color: blue"&gt;Shared&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; DoWriteLine(&lt;span style="color: blue"&gt;ByVal&lt;/span&gt; i &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Console.WriteLine(&lt;span style="color: #a31515"&gt;"VB was here: "&lt;/span&gt; &amp;amp; i)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;Public&lt;/span&gt; &lt;span style="color: blue"&gt;Shared&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; DoTest1()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;Dim&lt;/span&gt; iVal &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt; = 2&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;iVal.times(&lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; DoWriteLine))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;iVal.times(&lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt;)(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; DoWriteLine))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;iVal.times(&lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; Console.WriteLine)) &lt;span style="color: green"&gt;'blank/blank&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;iVal.times(&lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt;)(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; Console.WriteLine)) &lt;span style="color: green"&gt;'2/2&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;Public&lt;/span&gt; &lt;span style="color: blue"&gt;Shared&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; DoTest2()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;CRubyLike.times(2, &lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; DoWriteLine))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;CRubyLike.times(2, &lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt;)(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; DoWriteLine))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;CRubyLike.times(2, &lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; Console.WriteLine)) &lt;span style="color: green"&gt;'blank/blank&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;CRubyLike.times(2, &lt;span style="color: blue"&gt;New&lt;/span&gt; Action(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt;)(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; Console.WriteLine)) &lt;span style="color: green"&gt;'2/2&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;br /&gt;
End&lt;/span&gt; &lt;span style="color: blue"&gt;Class&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here is the C# Example:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; RubyLike;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; TestRubyLike_CS&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CTestRubyLike_CS&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoWriteLine()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"CSharp was here"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoWriteLineAndNum(&lt;span style="color: blue"&gt;int&lt;/span&gt; i)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"CSharp was here: "&lt;/span&gt; + i);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoTest1()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;/******************************************************\&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;          &lt;/span&gt;* This technique is the actual goal of this exercise&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;\******************************************************/&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;2.times(DoWriteLine);&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: green"&gt;// &amp;lt;-GOAL!&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;2.times(DoWriteLineAndNum);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// or&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;2.times(i =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"CSharp was here"&lt;/span&gt;));&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;2.times(i =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"CSharp was here: "&lt;/span&gt; + i));&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoTest2()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CRubyLike&lt;/span&gt;.times(2, DoWriteLine);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CRubyLike&lt;/span&gt;.times(2, DoWriteLineAndNum);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CRubyLike&lt;/span&gt;.times(2, (&lt;span style="color: #2b91af"&gt;Action&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine);&lt;span style="color: green"&gt;//blank/blank&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CRubyLike&lt;/span&gt;.times(2, (&lt;span style="color: #2b91af"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;)&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine);&lt;span style="color: green"&gt;//2/2&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here is a calling program for these (in C#)&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; TestRubyLike_CS;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; TestRubyLike_CPP;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; TestRubyLike_VB;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; TestRubyLike&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CTestRubyLike&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;///////////////////////////////&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// Make calls on extension methods&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"C# Example 1: ---------------------"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CTestRubyLike_CS&lt;/span&gt;.DoTest1();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// or&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;///////////////////////////////////&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// Make calls on static methods&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"C# Example 2: ---------------------"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CTestRubyLike_CS&lt;/span&gt;.DoTest2();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;///////////////////////&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// Make calls from C++&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"C++ Example: ----------------------"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CTestRubyLike_CPP&lt;/span&gt;.DoTest();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;/////////////////////&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// Make calls from VB&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"VB Example 1: ---------------------"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CTestRubyLike_VB&lt;/span&gt;.DoTest1();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;//or&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"VB Example 2: ---------------------"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CTestRubyLike_VB&lt;/span&gt;.DoTest2();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style="text-align: left"&gt;And, of course, the output:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;br /&gt;
&lt;img alt="TestRubyLikeOutput Picture" width="340" height="599" src="/images/geekswithblogs_net/THines01/TestRubyLike/TestRubyLikeOutput.jpg" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/138311.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/138311.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/138311.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/138311.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Enumerable::ToList() - C++ Missing From MSDN</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/02/22/enumerabletolist.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/02/22/enumerabletolist.aspx</id>
        <published>2010-02-22T16:30:45-06:00:00</published>
        <updated>2010-02-22T16:33:48Z</updated>
        <summary type="html">It seems the C++ code example for Enumerable::ToList() is absent/missing from MSDN.

Here is my version of the missing example for Enumerable::ToList();
</summary>
        <content type="html">&lt;p&gt;I would like to make one of these entries for every example I don't find on MSDN.&lt;br /&gt;
I'm not sure if the intention is to ignore C++ or if this was just expected to be too hard, too easy or too ugly for developers to grasp.&lt;/p&gt;
&lt;p&gt;I have submitted this as Community Content on MSDN, also.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb342261.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb342261.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is the missing example for Enumerable::ToList();&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;#include&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; &lt;span style="color: #a31515"&gt;"stdafx.h"&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System::Collections::Generic;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System::Linq;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;int&lt;/span&gt; GetLength(String^ str)&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; str-&amp;gt;Length;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;void&lt;/span&gt; main(&lt;span style="color: blue"&gt;void&lt;/span&gt;)&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;array&lt;/span&gt;&amp;lt;String^&amp;gt;^ fruits = { &lt;span style="color: #a31515"&gt;"apple"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"passionfruit"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"banana"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"mango"&lt;/span&gt;, &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                      &lt;/span&gt;&lt;span style="color: #a31515"&gt;"orange"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"blueberry"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"grape"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"strawberry"&lt;/span&gt; };&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;List&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;^ lengths =&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;Enumerable::ToList(&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;Enumerable::Select(&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;&lt;span style="color: blue"&gt;gcnew&lt;/span&gt; List&amp;lt;String^&amp;gt;(fruits),&lt;br /&gt;
&lt;span style="mso-tab-count: 5"&gt;                                  &lt;/span&gt;&lt;span style="color: blue"&gt;gcnew&lt;/span&gt; Func&amp;lt;String^, &lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;(GetLength)&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;for&lt;/span&gt; &lt;span style="color: blue"&gt;each&lt;/span&gt;(&lt;span style="color: blue"&gt;int&lt;/span&gt; length &lt;span style="color: blue"&gt;in&lt;/span&gt; lengths)&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Console::WriteLine(length);&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: green"&gt;/*&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;This code produces the following output:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;5&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;12&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;6&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;5&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;6&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;9&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;5&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;10&lt;br /&gt;
*/&lt;br /&gt;
&lt;/span&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-bidi-font-size: 11.0pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/138099.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/138099.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/138099.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/138099.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Linq Distinct and Custom Object Sort</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/THines01/archive/2010/02/15/filterandsort.aspx" />
        <id>http://geekswithblogs.net/THines01/archive/2010/02/15/filterandsort.aspx</id>
        <published>2010-02-15T20:50:58-06:00:00</published>
        <updated>2010-03-02T08:26:08Z</updated>
        <summary type="html">I've seen a lot of posts of people having problems using Distinct() and/or Sort() with custom objects.

Here is an example showing an implementation of both (in C++, C# and VB).

This post includes custom Compare methods, the implementation of Distinct() and the use of List.ForEach in the 3 main dot net languages.</summary>
        <content type="html">&lt;p&gt;&lt;span style="font-family: Courier New"&gt;The main purpose of this post is to show what's required in the main 3 .net languages for &lt;strong&gt;filtering &lt;/strong&gt;and &lt;strong&gt;sorting&lt;/strong&gt;.&lt;br /&gt;
I decided to put these two problems together because they presented themselves to me simultaneously &lt;img alt="" src="http://geekswithblogs.net/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" /&gt; .&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New"&gt;There are many instances where I need to Sort custom objects and many instances where I need to filter out duplicates from a list of custom objects.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New"&gt;For filtering (Distinct), the effect happens with the framework finds unique values for the object.&lt;br /&gt;
For the Sort, the default comparer will not work on most custom objects, so some specifics need to be included.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New"&gt;Here are the two actions that need to be done to ensure success:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;span style="font-family: Courier New"&gt;Create the object and override the ToString(), Equals() and GetHashCode() methods.&lt;br /&gt;
    - I base the "uniqueness" on the value inside ToString() because it's easier&lt;br /&gt;
      than other techniques.&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-family: Courier New"&gt;For sorting, create a custom "Compare" class based on the IComparer interface&lt;br /&gt;
    - this class must contain a Compare method.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="font-family: Courier New"&gt;...and now for the example:&lt;br /&gt;
Some of the sorting code is commented out because it is only needed once.  I could have simply called the same method from each example, but I want to show it in each language.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New"&gt;I chose a very simple Person class containing two strings and an int.&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-family: Courier New"&gt;&lt;span style="line-height: 115%; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;span style="font-family: Courier New"&gt;&lt;font color="#000000" size="2"&gt;First, here is the object:&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-family: Courier New"&gt;&lt;span style="line-height: 115%; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;namespace&lt;/span&gt;&lt;span style="line-height: 115%; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; PersonObj&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; strFirstName {&lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; strLastName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; intAge { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; CPerson()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strFirstName = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strLastName = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;intAge = 0;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; CPerson(&lt;span style="color: blue"&gt;string&lt;/span&gt; strFirstName, &lt;span style="color: blue"&gt;string&lt;/span&gt; strLastName, &lt;span style="color: blue"&gt;int&lt;/span&gt; intAge)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.strFirstName = strFirstName;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.strLastName = strLastName;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.intAge = intAge;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;//1. Override the ToString (your choice on uniqueness)&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="color: green"&gt;// Used to create a unique vision of the object&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;strLastName.Trim() + &lt;span style="color: #a31515"&gt;", "&lt;/span&gt; + &lt;span style="color: green"&gt;//comma-space&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;strFirstName.Trim() + &lt;span style="color: #a31515"&gt;", "&lt;/span&gt; +&lt;span style="color: green"&gt;//comma-space&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;intAge.ToString();&lt;span style="color: green"&gt;//suitable for printing&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;//2. Override the Equals so the comparison is done on the String&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; Equals(&lt;span style="color: blue"&gt;object&lt;/span&gt; obj)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="color: green"&gt;// essential&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; obj.ToString().Equals(&lt;span style="color: blue"&gt;this&lt;/span&gt;.ToString());&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;//3. Override the GetHashCode, so the internals can find uniqueness&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; GetHashCode()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="color: green"&gt;// steal the HashCode from the ToString()&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.ToString().GetHashCode();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style="font-family: Courier New"&gt;&lt;span style="line-height: 115%; color: green; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;////////////////////////////////////////////////////////////&lt;br /&gt;
// Here's the main calling program.&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span style="color: green"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; PersonObj;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; LinqDistinctCS;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; LinqDistinctCPP;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; LinqDistinctVB;&lt;br /&gt;
&lt;span style="color: green"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; LinqDistinct&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;&amp;gt; lstPeople = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;&amp;gt;()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;(){strLastName=&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;, strFirstName=&lt;span style="color: #a31515"&gt;"Neal"&lt;/span&gt;, intAge=46},&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;(){strLastName=&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;, strFirstName=&lt;span style="color: #a31515"&gt;"Neal"&lt;/span&gt;, intAge=46},&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;(){strLastName=&lt;span style="color: #a31515"&gt;"Griffith"&lt;/span&gt;, strFirstName=&lt;span style="color: #a31515"&gt;"Del"&lt;/span&gt;, intAge=45},&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;(){strLastName=&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;, strFirstName=&lt;span style="color: #a31515"&gt;"Susan"&lt;/span&gt;, intAge=42},&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;(){strLastName=&lt;span style="color: #a31515"&gt;"Griffith"&lt;/span&gt;, strFirstName=&lt;span style="color: #a31515"&gt;"Marie"&lt;/span&gt;, intAge=34},&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;(){strLastName=&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;, strFirstName=&lt;span style="color: #a31515"&gt;"Marti"&lt;/span&gt;, intAge=8},&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;(){strLastName=&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;, strFirstName=&lt;span style="color: #a31515"&gt;"Neal"&lt;/span&gt;, intAge=6} &lt;span style="color: green"&gt;//Junior&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;};&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"\n--- Before Distinct ---"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;lstPeople.ForEach(p =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(p));&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"\n--- With Distinct CPP and Sort ---"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CLinqDistinctCPP&lt;/span&gt;.TestDistinct(lstPeople);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"\n--- With Distinct CSharp ---"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CLinqDistinctCS&lt;/span&gt;.TestDistinct(lstPeople);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"\n--- With Distinct VB ---"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CLinqDistinctVB&lt;/span&gt;.TestDistinct(lstPeople);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;C++ Example&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-family: Courier New"&gt;&lt;span style="line-height: 115%; color: green; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;// LinqDistinctCPP.h&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;#pragma&lt;/span&gt;&lt;span style="line-height: 115%; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; &lt;span style="color: blue"&gt;once&lt;br /&gt;
using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System::Collections::Generic;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System::Linq;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; PersonObj;&lt;br /&gt;
&lt;span style="color: green"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; CComparePerson : IComparer&amp;lt;CPerson^&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="color: blue"&gt;public&lt;/span&gt;:&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: green"&gt;/*************************************************\&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;** Even though I'm comparing strings, the method&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;** must take CPerson parameters and do the string&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;** comparison underneath.&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;\*************************************************/&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;virtual&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; Compare(CPerson^ p1, CPerson^ p2)&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; p1-&amp;gt;ToString()-&amp;gt;CompareTo(p2-&amp;gt;ToString());&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;}&lt;br /&gt;
};&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-family: Courier New"&gt;&lt;span style="line-height: 115%; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;br /&gt;
&lt;span style="color: green"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; LinqDistinctCPP {&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; CLinqDistinctCPP&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;:&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DoPrint(CPerson^ p)&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;Console::WriteLine(p);&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; TestDistinct(List&amp;lt;CPerson^&amp;gt;^ lstPeople)&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="color: green"&gt;// lstPeople-&amp;gt;Sort(); ** Throws InvalidOperationException **&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;&lt;span style="color: green"&gt;// The delegate must be in a separate class&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;lstPeople-&amp;gt;Sort(&lt;span style="color: blue"&gt;gcnew&lt;/span&gt; CComparePerson()); &lt;span style="color: green"&gt;// ** Good **&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;&lt;span style="color: green"&gt;// Note how C++ uses the Extension methods as static methods&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;Enumerable::ToList(&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;Enumerable::Distinct(lstPeople))&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;-&amp;gt;ForEach(&lt;span style="color: blue"&gt;gcnew&lt;/span&gt; Action&amp;lt;CPerson^&amp;gt;(DoPrint));&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;};&lt;br /&gt;
}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;C# Example&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; PersonObj;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; LinqDistinctCS&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: green"&gt;/*&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;public class CComparePerson : IComparer&amp;lt;CPerson&amp;gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;virtual public int Compare(CPerson p1, CPerson p2)&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 2"&gt;              &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;return p1.ToString().CompareTo(p2.ToString());&lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;*/&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CLinqDistinctCS&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; TestDistinct(&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;CPerson&lt;/span&gt;&amp;gt; lstPeople)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// lstPeople.Sort(); ** Throws InvalidOperationException **&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// lstPeople.Sort(new CComparePerson()); // ** Good **&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// ...or...&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// lstPeople.Sort((p1, p2) =&amp;gt; p1.ToString().CompareTo(p2.ToString()));&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;lstPeople.Distinct().ToList().ForEach(p =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(p));&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;VB Example&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New"&gt;&lt;span style="line-height: 115%; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: green; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;' Here's the VB Example&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;Imports&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-size: 14.0pt"&gt;&lt;font color="#000000"&gt; System&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;Imports&lt;/span&gt;&lt;font color="#000000"&gt; System.Collections.Generic&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;Imports&lt;/span&gt;&lt;font color="#000000"&gt; System.Linq&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: blue"&gt;Imports&lt;/span&gt;&lt;font color="#000000"&gt; PersonObj&lt;br /&gt;
&lt;/font&gt;&lt;span style="color: green"&gt;'&lt;br /&gt;
'Public Class CComparePerson&lt;br /&gt;
'Implements IComparer(Of CPerson)&lt;br /&gt;
'&lt;br /&gt;
'Public Function Compare(ByVal p1 As CPerson, _&lt;br /&gt;
'&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;ByVal p2 As CPerson) As Integer _&lt;br /&gt;
'Implements IComparer(Of CPerson).Compare&lt;br /&gt;
'&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Return p1.ToString().CompareTo(p2.ToString())&lt;br /&gt;
'End Function&lt;br /&gt;
'End Class&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;Public&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Class&lt;/span&gt;&lt;font color="#000000"&gt; CLinqDistinctVB&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;Public&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Shared&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Sub&lt;/span&gt;&lt;font color="#000000"&gt; TestDistinct(&lt;/font&gt;&lt;span style="color: blue"&gt;ByVal&lt;/span&gt;&lt;font color="#000000"&gt; lstPeople &lt;/font&gt;&lt;span style="color: blue"&gt;As&lt;/span&gt;&lt;font color="#000000"&gt; List(&lt;/font&gt;&lt;span style="color: blue"&gt;Of&lt;/span&gt;&lt;font color="#000000"&gt; CPerson))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;/font&gt;&lt;span style="color: green"&gt;'lstPeople.Sort() ** Throws InvalidOperationException **&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;      &lt;/font&gt;&lt;/span&gt;&lt;span style="color: green"&gt;'lstPeople.Sort(New CComparePerson) ' ** Good **&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;      &lt;/font&gt;&lt;/span&gt;&lt;span style="color: green"&gt;' ...or...&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;      &lt;/font&gt;&lt;/span&gt;&lt;span style="color: green"&gt;'lstPeople.Sort(Function(p1, p2) p1.ToString().CompareTo(p2.ToString()))&lt;br /&gt;
&lt;/span&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;lstPeople.Distinct().ToList().ForEach(&lt;/font&gt;&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt;&lt;font color="#000000"&gt; Console.WriteLine)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;End&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Sub&lt;br /&gt;
End&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="color: blue"&gt;Class&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style="text-align: left"&gt;&lt;br /&gt;
Here's the result:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img alt="" width="308" height="455" src="/images/geekswithblogs_net/THines01/DistinctAndSort/Result.jpg" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;
&lt;p&gt;&lt;span id="1266289920579S" style="display: none"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;C# (CSharp) Example&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;img src="http://geekswithblogs.net/THines01/aggbug/137983.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/THines01/comments/137983.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137983.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137983.aspx</trackback:ping>
    </entry>
</feed>
