<rss version="2.0" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Tom Hines (writinThatCode.com)</title>
        <link>http://geekswithblogs.net/THines01/Default.aspx</link>
        <description>Writin' That Code!</description>
        <language>en-US</language>
        <copyright>Tom Hines</copyright>
        <managingEditor>THines01@Yahoo.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Tom Hines (writinThatCode.com)</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/THines01/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Calling An ASMX Web Service From Different Languages</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/03/07/138386.aspx</link>
            <description>&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 height="191" alt="Graphic of Ruby Result" width="300" 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-size: 10pt; font-family: 'Courier New'; 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-size: 10pt; font-family: 'Courier New'; 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="font-size: 8pt; color: #548dd4; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; mso-bidi-font-size: 11.0pt; mso-themecolor: text2; mso-themetint: 153"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; 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="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the Ruby version&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; 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-size: 8pt; font-family: 'Arial','sans-serif'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; 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-size: 8pt; font-family: 'Arial','sans-serif'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;doWebService()&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: 'Arial','sans-serif'; 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="margin: 0in 0in 10pt; line-height: normal; text-align: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 'Arial','sans-serif'; 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="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the Perl version:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; font-family: 'Times New Roman','serif'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; 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-size: 12pt; font-family: 'Times New Roman','serif'; 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="margin: 0in 0in 0pt; line-height: normal; text-align: center" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 'Arial','sans-serif'; 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="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;Here is the Java version:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; font-family: 'Times New Roman','serif'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; 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-size: 10pt; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;}&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: 'Times New Roman','serif'; 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="margin: 0in 0in 0pt; line-height: normal; text-align: center" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 'Arial','sans-serif'; 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="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; 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-size: 10pt; font-family: 'Times New Roman','serif'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; color: green; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;// doWebService_CPP.h&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;#pragma&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; 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-size: 12pt; font-family: 'Times New Roman','serif'; 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="margin: 0in 0in 0pt; line-height: normal; text-align: center" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 'Arial','sans-serif'; 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="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; 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-size: 10pt; font-family: 'Times New Roman','serif'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;Public&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; 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-size: 9pt; font-family: 'Arial','sans-serif'; 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="margin: 0in 0in 0pt; line-height: normal; text-align: center" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 'Arial','sans-serif'; 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="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; 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-size: 10pt; font-family: 'Times New Roman','serif'; 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; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-size: 8pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New'; 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-size: 12pt; font-family: 'Times New Roman','serif'; 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="font-size: 8pt; color: #00b050; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; 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="font-size: 8pt; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; 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="font-size: 8pt; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; 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;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138386"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138386" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/138386.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/03/07/138386.aspx</guid>
            <pubDate>Mon, 08 Mar 2010 04:07:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/138386.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/03/07/138386.aspx#feedback</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>
        </item>
        <item>
            <title>Cross-language Extension Method Calling</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionsparttwo.aspx</link>
            <description>&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;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-bidi-font-size: 11.0pt"&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;/span&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;// vitual 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;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;
&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;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; Calling program in C++&lt;/p&gt;
&lt;p&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;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;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138358"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138358" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/138358.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionsparttwo.aspx</guid>
            <pubDate>Fri, 05 Mar 2010 23:22:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/138358.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionsparttwo.aspx#feedback</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>
        </item>
        <item>
            <title>Extension Methods in Dot Net 2.0</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionstwodotoh.aspx</link>
            <description>&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;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138357"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138357" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/138357.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionstwodotoh.aspx</guid>
            <pubDate>Fri, 05 Mar 2010 18:57:45 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/138357.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/03/05/extensionstwodotoh.aspx#feedback</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>
        </item>
        <item>
            <title>Ruby-Like "times" method #ruby #csharp #linq #vb #cpp</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/03/03/times.aspx</link>
            <description>&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;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138311"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138311" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/138311.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/03/03/times.aspx</guid>
            <pubDate>Wed, 03 Mar 2010 20:07:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/138311.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/03/03/times.aspx#feedback</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>
        </item>
        <item>
            <title>Enumerable::ToList() - C++ Missing From MSDN</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/02/22/enumerabletolist.aspx</link>
            <description>&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;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138099"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138099" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/138099.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/02/22/enumerabletolist.aspx</guid>
            <pubDate>Mon, 22 Feb 2010 22:30:45 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/138099.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/02/22/enumerabletolist.aspx#feedback</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>
        </item>
        <item>
            <title>Linq Distinct and Custom Object Sort</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/02/15/filterandsort.aspx</link>
            <description>&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;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137983"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137983" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137983.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/02/15/filterandsort.aspx</guid>
            <pubDate>Tue, 16 Feb 2010 02:50:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137983.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/02/15/filterandsort.aspx#feedback</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>
        </item>
        <item>
            <title>ILookup</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/02/12/ilookup.aspx</link>
            <description>&lt;p&gt;There are many times where I need to convert an array of data into a Dictionary or Hash table.  If the key to be used in the new Dictionary is not unique, it is necessary to manage duplicates.  I previously went through a lot of gyrations, but eventually setteled on the ILookup.  ILookup is not perfect, but it beats some alternatives.&lt;/p&gt;
&lt;p&gt;Note this example (given the following structure):&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"&gt;public&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes"&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: blue"&gt;string&lt;/span&gt;[]&amp;gt; lst_arr_strData = &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: blue"&gt;string&lt;/span&gt;[]&amp;gt;()&lt;br /&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"fred"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"joe"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"bill"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"sam"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"dave"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"fred"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"2"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"joe"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"2"&lt;/span&gt;}&lt;br /&gt;
};&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt"&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 class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Technique 0: Throw an Exception : Argument Exception : Message="An item with the same key has already been added."&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;img border="1" alt="Dictionary Picture Causing Exception" width="476" height="44" src="/images/geekswithblogs_net/THines01/ToLookup/Exception1.jpg" /&gt;&lt;br /&gt;
&lt;img border="1" alt="Argument Exception Picture" width="268" height="58" src="/images/geekswithblogs_net/THines01/ToLookup/Exception.jpg" /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Technique 1: Ignore/discard duplicates&lt;br style="mso-special-character: line-break" /&gt;
&lt;img border="1" alt="Picture showing how to eliminate duplicates" width="471" height="176" src="/images/geekswithblogs_net/THines01/ToLookup/mapEliminate.jpg" /&gt;&lt;br style="mso-special-character: line-break" /&gt;
 &lt;/p&gt;
&lt;hr /&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Technique 2: Add the duplicate data as an Enumerable type&lt;br /&gt;
   Example: Dictionary&amp;lt;TKey, List&amp;lt;TValue&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;img border="1" alt="Picture of code showing conversion of duplicates to a List in the Dictionary" width="521" height="215" src="/images/geekswithblogs_net/THines01/ToLookup/mapCollapse(1).jpg" /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;ToLookup converts an IEnumerable&amp;lt;T&amp;gt; to a Lookup&amp;lt;Key, Element&amp;gt; type.  Lookup is like a dictionary, but where a Dictionary uses a single key value, Lookup maps the keys to a collection of values.  Lookups have no public constructor and are immutable.  You cannot add or remove elements or keys after they are created.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-top: 0in; margin-bottom: 10pt; margin-right: 0in"&gt;Technique 3: Convert the data using the Enumerable.ToLookup&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 40px"&gt;ILookup&amp;lt;TKey, TElement&amp;gt;&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb549073.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb549073.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;In this example, I show the calling code and the ILookup solution in C++, C# and VB&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="line-height: 115%; font-family: Courier; color: green; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// CSharp Main program&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 8pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&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; LinqTestCPP;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; LinqTestCS;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; LinqTestVB;&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; LinqTestShell&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;LinqTest&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&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;// here is some static data to convert to the ILookup&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: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;[]&amp;gt; lst_arr_strData = &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: blue"&gt;string&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"fred"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"joe"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"bill"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"sam"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"dave"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"1"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"fred"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"2"&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: blue"&gt;string&lt;/span&gt;[] {&lt;span style="color: #a31515"&gt;"joe"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"2"&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;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: green"&gt;// Interfaces will/should look exactly the same.&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;"---&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;C++&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;---"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CLinqTestCPP&lt;/span&gt;.LinqTest(lst_arr_strData);&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;"--- CSharp ---"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CLinqTestCS&lt;/span&gt;.LinqTest(lst_arr_strData);&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;"---&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;VB&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;---"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CLinqTestVB&lt;/span&gt;.LinqTest(lst_arr_strData);&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;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"&gt;// CPP implementation&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"&gt;#pragma&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; 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::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;namespace&lt;/span&gt; LinqTestCPP {&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; CLinqTestCPP&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;protected&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: 2"&gt;              &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; String^ GetFirst(&lt;span style="color: blue"&gt;array&lt;/span&gt;&amp;lt;String^&amp;gt;^ arr){&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; Enumerable::First&amp;lt;String^&amp;gt;(arr);&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 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: 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; LinqTest(List&amp;lt;&lt;span style="color: blue"&gt;array&lt;/span&gt;&amp;lt;String^&amp;gt;^&amp;gt;^ lst_arr_strData)&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;ILookup&amp;lt;String^, &lt;span style="color: blue"&gt;array&lt;/span&gt;&amp;lt;String^&amp;gt;^&amp;gt;^ lkup = &lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;Enumerable::ToLookup(lst_arr_strData,&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;&lt;span style="color: blue"&gt;array&lt;/span&gt;&amp;lt;String^&amp;gt;^, String^&amp;gt;(GetFirst)&lt;br /&gt;
&lt;span style="mso-tab-count: 5"&gt;                                  &lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;&lt;span style="color: blue"&gt;for&lt;/span&gt; &lt;span style="color: blue"&gt;each&lt;/span&gt; (IGrouping&amp;lt;String^, &lt;span style="color: blue"&gt;array&lt;/span&gt;&amp;lt;String^&amp;gt;^&amp;gt;^ arr &lt;span style="color: blue"&gt;in&lt;/span&gt; lkup)&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;Console::Write(arr-&amp;gt;Key);&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&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;array&lt;/span&gt;&amp;lt;String^&amp;gt;^ s &lt;span style="color: blue"&gt;in&lt;/span&gt; arr)&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;{&lt;br /&gt;
&lt;span style="mso-tab-count: 5"&gt;                                  &lt;/span&gt;Console::Write(&lt;span style="color: #a31515"&gt;"\t"&lt;/span&gt; + s[1]);&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                           &lt;/span&gt;Console::WriteLine();&lt;br /&gt;
&lt;span style="mso-tab-count: 3"&gt;                     &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: 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"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;C# (CSharp) 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"&gt;////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// CSharp implementation&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"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes"&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;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; LinqTestCS&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;CLinqTestCS&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; LinqTest(&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;[]&amp;gt; lst_arr_strData)&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;// (using Extension)&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;/* ILookup&amp;lt;string, string[]&amp;gt; lkup =&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;lst_arr_strData.ToLookup(key =&amp;gt; key.First()); */&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ILookup&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;[]&amp;gt; lkup =&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Enumerable&lt;/span&gt;.ToLookup(lst_arr_strData,&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;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;[], &lt;span style="color: #2b91af"&gt;String&lt;/span&gt;&amp;gt;(&lt;span style="color: #2b91af"&gt;Enumerable&lt;/span&gt;.First) &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;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;IGrouping&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;[]&amp;gt; arr &lt;span style="color: blue"&gt;in&lt;/span&gt; lkup)&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;.Write(arr.Key);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; s &lt;span style="color: blue"&gt;in&lt;/span&gt; arr)&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;.Write(&lt;span style="color: #a31515"&gt;"\t"&lt;/span&gt; + s[1]);&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: #2b91af"&gt;Console&lt;/span&gt;.WriteLine();&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;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt"&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; 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: green; font-size: 8pt; mso-no-proof: yes"&gt;' //////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
' // VB Implementation&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"&gt;Imports&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Courier New'; font-size: 8pt; mso-no-proof: yes"&gt; System.Linq&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; CLinqTestVB&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;Shared&lt;/span&gt; &lt;span style="color: blue"&gt;Sub&lt;/span&gt; LinqTest(&lt;span style="color: blue"&gt;ByVal&lt;/span&gt; lst_arr_strData &lt;span style="color: blue"&gt;As&lt;/span&gt; List(&lt;span style="color: blue"&gt;Of&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;&lt;span style="color: green"&gt;' (using Extension)&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;' Dim lkup As ILookup(Of String, String()) = _&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;'&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;lst_arr_strData.ToLookup(Function(key) key.First())&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;Dim&lt;/span&gt; lkup &lt;span style="color: blue"&gt;As&lt;/span&gt; ILookup(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;String&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;Enumerable.ToLookup(lst_arr_strData, _&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;New&lt;/span&gt; Func(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;String&lt;/span&gt;(), &lt;span style="color: blue"&gt;String&lt;/span&gt;)(&lt;span style="color: blue"&gt;AddressOf&lt;/span&gt; Enumerable.First))&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;For&lt;/span&gt; &lt;span style="color: blue"&gt;Each&lt;/span&gt; arr &lt;span style="color: blue"&gt;As&lt;/span&gt; IGrouping(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;String&lt;/span&gt;, &lt;span style="color: blue"&gt;String&lt;/span&gt;()) &lt;span style="color: blue"&gt;In&lt;/span&gt; lkup&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;Console.Write(arr.Key)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;For&lt;/span&gt; &lt;span style="color: blue"&gt;Each&lt;/span&gt; s &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;String&lt;/span&gt;() &lt;span style="color: blue"&gt;In&lt;/span&gt; arr&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;Console.Write(Chr(9) + s(1))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;Next&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;Console.WriteLine()&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;Next&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;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"&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; :and the output...:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img border="1" alt="Picture of output" width="204" height="287" src="/images/geekswithblogs_net/THines01/ToLookup/Result.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137949"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137949" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137949.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/02/12/ilookup.aspx</guid>
            <pubDate>Fri, 12 Feb 2010 23:37:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137949.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/02/12/ilookup.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137949.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137949.aspx</trackback:ping>
        </item>
        <item>
            <title>My New Internet Explorer 8 Homepage</title>
            <link>http://geekswithblogs.net/THines01/archive/2010/01/25/ie8.aspx</link>
            <description>&lt;p&gt;Here is what I see most of the time I run IE8, now.&lt;br /&gt;
I guess I could consider it my new home page!&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img alt="IE Error" width="435" height="149" src="/images/geekswithblogs_net/THines01/IE_Error.jpg" /&gt;&lt;/p&gt;
&lt;p style="text-align: left"&gt;Your last browsing session closed unexpectedly.&lt;br /&gt;
Would you like to restore your last session, or go to your home page?&lt;br /&gt;
Restore last session&lt;br /&gt;
Go to home page&lt;/p&gt;
&lt;p style="text-align: left"&gt;Hmpfh...&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137625"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137625" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137625.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/01/25/ie8.aspx</guid>
            <pubDate>Mon, 25 Jan 2010 19:50:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137625.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/01/25/ie8.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137625.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137625.aspx</trackback:ping>
        </item>
        <item>
            <title>Utility that uses the CUserDomainSid class</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/01/07/regenable.aspx</link>
            <description>&lt;p&gt;In the last post, I illustrated a module that retrieves the User, Domain and SID from the Windows System.Management namespace.  In this post, I'm showing a practical application for that module.&lt;/p&gt;
&lt;p&gt;This utility can be used if a user finds that access to the system registry or add/remove programs has been accidentally denied.  Of course, this can also be done with a &lt;a target="_blank" href="http://freewareindia.blogspot.com/2008/07/issues-with-windows-registry.html"&gt;VBS script&lt;/a&gt; (run with Wscript.exe).&lt;/p&gt;
&lt;p&gt;Potential error messages:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Registry editing has been disabled by your administrator.&lt;/li&gt;
    &lt;li&gt;Add or Remove Programs has been restricted. Please check with your administrator.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="Registry editing has been disabled" width="350" height="119" src="/images/geekswithblogs_net/THines01/UserDomainSid/regeditdisabled.jpg" /&gt;&lt;br /&gt;
&lt;img alt="Add or Remove Programs restricted" width="479" height="119" src="/images/geekswithblogs_net/THines01/UserDomainSid/AddOrRemoveRestricted.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;This was created with Visual Studio Standard 2008 and at least .NET 2.0.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: smaller"&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt; System;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; Microsoft.Win32;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; UserDomainSid; &lt;font color="#008000"&gt;//...from previous post&lt;/font&gt;&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; RegRelease&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;CRegRelease&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;string&lt;/span&gt; GetSid()&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;CUdsObj&lt;/span&gt; uds = &lt;span style="color: #2b91af"&gt;CUserDomainSid&lt;/span&gt;.GetUDS();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; uds.strSID;&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: blue"&gt;string&lt;/span&gt; strSid = GetSid();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Registry&lt;/span&gt;.SetValue(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #a31515"&gt;@"HKEY_USERS\"&lt;/span&gt; + strSid + &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #a31515"&gt;@"\Software\Microsoft\Windows\CurrentVersion\Policies\System"&lt;/span&gt;,&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #a31515"&gt;"DisableRegistryTools"&lt;/span&gt;, 0, &lt;span style="color: #2b91af"&gt;RegistryValueKind&lt;/span&gt;.DWord);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Registry&lt;/span&gt;.SetValue(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #a31515"&gt;@"HKEY_USERS\"&lt;/span&gt; + strSid + &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #a31515"&gt;@"\Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall"&lt;/span&gt;,&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #a31515"&gt;"NoAddRemovePrograms"&lt;/span&gt;, 0, &lt;span style="color: #2b91af"&gt;RegistryValueKind&lt;/span&gt;.DWord);&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&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;font size="2" face="Courier"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137391"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137391" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137391.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/01/07/regenable.aspx</guid>
            <pubDate>Fri, 08 Jan 2010 04:53:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137391.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/01/07/regenable.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137391.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137391.aspx</trackback:ping>
        </item>
        <item>
            <title>Using System.Management to get the User, Domain and SID</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/01/07/getuserdomainsid.aspx</link>
            <description>&lt;p&gt;I have seen a few examples of &lt;a target="_blank" href="http://freewareindia.blogspot.com/2008/07/issues-with-windows-registry.html"&gt;VBS scripts&lt;/a&gt; used to get the User ID, Domain and SID of the current user.&lt;br /&gt;
This information is valuable when making registry modifications for the current user programatically.&lt;br /&gt;
I needed a way to retrieve that information in a .NET module to include in other .NET programs.&lt;br /&gt;
Here is my adaptation:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: smaller"&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt; System.Management; &lt;font color="#008000"&gt;//Be sure to add this as a Reference, also.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; UserDomainSid&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; Object returned by the call to CUserDomainSid.GetUDS()&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: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CUdsObj&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: 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; Domain prefix for the user&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: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; strDomain&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;get&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &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;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; User ID&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: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; strUser&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;get&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &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;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; SID for the user&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: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; strSID&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;get&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &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;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; Constructor&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: blue"&gt;public&lt;/span&gt; CUdsObj()&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;strDomain = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strUser = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strSID = &lt;span style="color: #a31515"&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 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; Extracts the User, Domain and SID of the current user.&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: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CUserDomainSid&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: 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; The root scope of the query.&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: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; strScope = &lt;span style="color: #a31515"&gt;@"\\.\root\cimv2"&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; Use the System.Management namespace to get the current&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; User, Domain and SID.&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; This is useful for querying and setting certain values&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; in the system registry.&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;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;CUserDomainSid&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: #2b91af"&gt;CUdsObj&lt;/span&gt; GetUDS()&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;CUdsObj&lt;/span&gt; udsRetVal = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CUdsObj&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;// UserName will contain the domain and the user&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; strQuery = &lt;span style="color: #a31515"&gt;"Select UserName FROM Win32_ComputerSystem"&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;///////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// Query the ManagementObject to find the current user&lt;br /&gt;
&lt;/span&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;ManagementObjectSearcher&lt;/span&gt; mosItems = &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;ManagementObjectSearcher&lt;/span&gt;(strScope, strQuery))&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;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;ManagementBaseObject&lt;/span&gt; mbo &lt;span style="color: blue"&gt;in&lt;/span&gt; mosItems.Get())&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;//ManagementObjectCollection&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;[] arr_strUserDom =&lt;/span&gt;&lt;br /&gt;
                                                  &lt;span style="line-height: 115%; font-family: Courier; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;mbo[&lt;span style="color: #a31515"&gt;"UserName"&lt;/span&gt;].ToString().Split(&lt;span style="color: #a31515"&gt;'\\'&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;udsRetVal.strDomain = arr_strUserDom[0];&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;udsRetVal.strUser = arr_strUserDom[1];&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 style="mso-spacerun: yes"&gt;         &lt;/span&gt;udsRetVal.strSID =&lt;br /&gt;
             GetSid(udsRetVal.strDomain, udsRetVal.strUser);&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;return&lt;/span&gt; udsRetVal;&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; GetSid uses the System.Management namespace to obtain the SID &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; for a given domain and user name&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="strDomain"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;the user's domain&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="strUser"&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;the user's login ID&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;string (SID)&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;string&lt;/span&gt; GetSid(&lt;span style="color: blue"&gt;string&lt;/span&gt; strDomain, &lt;span style="color: blue"&gt;string&lt;/span&gt; strUser)&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; strRetValSid = &lt;span style="color: #a31515"&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="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="color: green"&gt;// Create a new query into the Win32_UserAccount to get the SID&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;#region&lt;/span&gt; QUERY_REGION&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; strQuery =&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: green"&gt;// Go directly to the SID bypassing all others&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #a31515"&gt;"Select SID "&lt;/span&gt; +&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #a31515"&gt;"FROM Win32_UserAccount "&lt;/span&gt; +&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #a31515"&gt;"WHERE"&lt;/span&gt; +&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #a31515"&gt;" Domain='{0:G}'"&lt;/span&gt; +&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #a31515"&gt;" AND Name='{1:G}'"&lt;/span&gt;,&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;strDomain, strUser);&lt;br /&gt;
&lt;span style="color: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;#endregion&lt;/span&gt; QUERY_REGION&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;// Run the second query once we have the user name and Domain&lt;br /&gt;
&lt;/span&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;ManagementObjectSearcher&lt;/span&gt; mosItems =&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;ManagementObjectSearcher&lt;/span&gt;(strScope, strQuery))&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;//ManagementObjectCollection&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;ManagementBaseObject&lt;/span&gt; mbo &lt;span style="color: blue"&gt;in&lt;/span&gt; mosItems.Get())&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;// Go directly to the SID bypassing all others&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;strRetValSid = mbo[&lt;span style="color: #a31515"&gt;"SID"&lt;/span&gt;].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;}&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; strRetValSid;&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&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137386"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137386" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137386.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/01/07/getuserdomainsid.aspx</guid>
            <pubDate>Thu, 07 Jan 2010 22:22:03 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137386.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/01/07/getuserdomainsid.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137386.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137386.aspx</trackback:ping>
        </item>
        <item>
            <title>Web Services Call including the XML and Linq namespaces</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2010/01/01/callingthatwebservice.aspx</link>
            <description>&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="color: #000000"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;I like using &lt;a title="Link to Web Services Page" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms972326.aspx"&gt;ASMX Web Services&lt;/a&gt; (WS)in my code -- either creating them or just calling them.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
(Yes, I use &lt;a title="Link to the WCF Page" target="_blank" href="http://msdn.microsoft.com/en-us/library/dd943056.aspx"&gt;Windows Communication Foundation (WCF)&lt;/a&gt; also).&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;One of the best features of the WS call is that the object model can be exposed to allow the caller to return specific results that need no additional parsing.  This does not hold up, however, if the result is returned in a string of raw XML as the result may require additional parsing to be of best use.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="color: #000000"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;Here is an example of calling Web Services where:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;span style="color: #000000"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;The Web Service returns raw XML without object formatting&lt;br /&gt;
    (called by HTTP)&lt;br /&gt;
    and the XmlDocument is used to parse the result.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #000000"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;The Web Service returns raw XML without object formatting&lt;br /&gt;
    (called by SOAP)&lt;br /&gt;
    and the XmlDocument is used to parse the result.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #000000"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;The Web Service returns a regular object&lt;br /&gt;
    and no active XML treatment is needed.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I created this using using Visual Studio 2008 Standard calling to two different Web Services that provide Stock Quotes.&lt;br /&gt;
Here is an AltaVista query that can be used to find &lt;a target="_blank" href="http://www.altavista.com/web/results?itag=ody&amp;amp;q=%22the+following+operations+are+supported%22+AND+%22asmx%22&amp;amp;kgs=1&amp;amp;kls=0"&gt;Web Services on the web&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img border="1" alt="" width="168" height="96" src="/images/geekswithblogs_net/THines01/WebXmlSoap/References.jpg" /&gt;&lt;br /&gt;
&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;img border="1" alt="WS_SQ Properties" width="292" height="248" src="/images/geekswithblogs_net/THines01/WebXmlSoap/WS_SQ_Properties.jpg" /&gt;&lt;br /&gt;
&lt;img border="1" alt="" width="356" height="247" src="/images/geekswithblogs_net/THines01/WebXmlSoap/WS_Nexus6.jpg" /&gt;&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="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; 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: 10pt; mso-no-proof: yes"&gt; System;&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; System.Xml.Linq;&lt;br /&gt;
&lt;span style="color: green"&gt;//&lt;br /&gt;
//using Snag.WS_SQ;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; Snag.WS_Nexus6;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; Snag&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;CSnag&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: 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; Main()&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: 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; strStockSymbol = &lt;span style="color: #a31515"&gt;"ERIC"&lt;/span&gt;;&lt;span style="color: green"&gt;//Ericsson&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;"WS="&lt;/span&gt; + GetWsToXmlLastValue(strStockSymbol));&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;"XD="&lt;/span&gt; + GetXdToXmlLastValue(strStockSymbol));&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;"SO="&lt;/span&gt; + GetWsToSoapLastValue(strStockSymbol));&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&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: &amp;quot;Courier New&amp;quot;; font-size: 10pt; 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; &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; Makes a call to a web service that implements the SOAP HTTP binding&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; and parses the XML (string) response.&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;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; This example is for calls that return XML not returned in&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; a pre-parsed object.&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="strStockSymbol"&amp;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;the last value of the stock&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;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetXdToXmlLastValue(&lt;span style="color: blue"&gt;string&lt;/span&gt; strStockSymbol)&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;XDocument&lt;/span&gt; xd = &lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;.Parse( &lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;.Load(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #a31515"&gt;"http://www.webservicex.net/stockquote.asmx/GetQuote?symbol="&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;+ strStockSymbol).Descendants().First().Value);&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;return&lt;/span&gt; xd&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Element(&lt;span style="color: #a31515"&gt;"StockQuotes"&lt;/span&gt;).Element(&lt;span style="color: #a31515"&gt;"Stock"&lt;/span&gt;).Element(&lt;span style="color: #a31515"&gt;"Last"&lt;/span&gt;).Value;&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&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: 10pt; 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; &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; Makes a regular WebService call using SOAP&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; and parses the XML (string) response.&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;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; This example is for calls that return XML not returned in&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; an object&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="strStockSymbol"&amp;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;the last value of the stock&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;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetWsToXmlLastValue(&lt;span style="color: blue"&gt;string&lt;/span&gt; strStockSymbol)&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;using&lt;/span&gt; (WS_SQ.&lt;span style="color: #2b91af"&gt;StockQuote&lt;/span&gt; ws = &lt;span style="color: blue"&gt;new&lt;/span&gt; WS_SQ.&lt;span style="color: #2b91af"&gt;StockQuote&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: #2b91af"&gt;XDocument&lt;/span&gt; xd =&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;.Parse(ws.GetQuote(strStockSymbol));&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; xd&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;.Element(&lt;span style="color: #a31515"&gt;"StockQuotes"&lt;/span&gt;).Element(&lt;span style="color: #a31515"&gt;"Stock"&lt;/span&gt;).Element(&lt;span style="color: #a31515"&gt;"Last"&lt;/span&gt;).Value;&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&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: 10pt; 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; &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; Makes a regular WebService call using SOAP&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; where an object is returned.&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="strStockSymbol"&amp;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;the last value of the stock&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;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetWsToSoapLastValue(&lt;span style="color: blue"&gt;string&lt;/span&gt; strStockSymbol)&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;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;StockQuoteService&lt;/span&gt; sqs = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StockQuoteService&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;return&lt;/span&gt; sqs.GetStockQuote(strStockSymbol).LastTrade;&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;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137306"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137306" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137306.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2010/01/01/callingthatwebservice.aspx</guid>
            <pubDate>Fri, 01 Jan 2010 21:47:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137306.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2010/01/01/callingthatwebservice.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137306.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137306.aspx</trackback:ping>
        </item>
        <item>
            <title>Linq to XML Example (Parsing RSS XML)</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2009/12/29/linqtoxml.aspx</link>
            <description>&lt;p&gt;[Discalimer]&lt;br /&gt;
This is just fun code and nothing too serious.  Anything bigger than this should be hosted on a site where others can contribute.&lt;/p&gt;
&lt;p&gt;[The Story]&lt;br /&gt;
A while back, someone asked a question on Twitter concerning LINQ to XML.  I made a small example then as a proof of concept, then i kept playing with it until I came up with a lite framework for a utility that can be used to search and download DotNetRocks podcasts.&lt;/p&gt;
&lt;p&gt;Right now, the utility is a stand-alone command-line app, but is written in such a way that it could be used in any type of app (graphical or other).&lt;/p&gt;
&lt;p&gt;[What it does:]&lt;br /&gt;
The utility parses the XML of the RSS feed and allows searches by keyword into the title and description of the podcasts.&lt;br /&gt;
When the proper ones are found, they can be downloaded (into the "temp" directory).&lt;/p&gt;
&lt;p&gt;Here is the feed it parses:&lt;br /&gt;
&lt;font color="#a31515" size="3" face="Courier"&gt;&lt;a href="http://www.pwop.com/feed.aspx?show=dotnetrocks&amp;amp;filetype=master"&gt;http://www.pwop.com/feed.aspx?show=dotnetrocks&amp;amp;filetype=master&lt;/a&gt;#&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The "meat" of the program is in the function: &lt;font size="3" face="Courier"&gt;GetMp3ListBySubject();&lt;/font&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; color: green; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;// DownloadDnr.cs&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// This program downloads content from the DotNetRocks repository based on the&lt;br /&gt;
// given search criteria.&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&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.IO;&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; System.Net;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Xml.Linq;&lt;br /&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Resources;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; DownloadDnr&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CDownloadDnr&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;string&lt;/span&gt; m_strUsage = &lt;span style="color: #a31515"&gt;"DownloadDnr {theme} {auto}\n"&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;"\twhere {theme} is the search word for the"&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;" show(s) to be downloaded.\n\n"&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;"[Example:]\n\tDownloadDnr \"kate gregory\" auto\n"&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;"\twill list and download all shows mentioning\n"&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;"\tKate Gregory into the %temp% directory automatically.\n"&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;"\twithout asking the user."&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;int&lt;/span&gt; m_intNumFilesProcessed = 0;&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;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; strError = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;bool&lt;/span&gt;&amp;gt; isArg = &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;s =&amp;gt; args.Skip(1).Any(s2 =&amp;gt; s2.ToUpper().Equals(s));&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (args.Length.Equals(0))&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(m_strUsage);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;return&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 style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt;&amp;gt; lst = &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;CDnrResponse&lt;/span&gt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (!GetMp3ListBySubject(args[0], &lt;span style="color: blue"&gt;ref&lt;/span&gt; lst, &lt;span style="color: blue"&gt;ref&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: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Error getting list: "&lt;/span&gt; + strError);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;return&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;if&lt;/span&gt; (lst.Count.Equals(0))&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;"Not found"&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;return&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;lst.ForEach(s =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(s.ToString()));&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (isArg(&lt;span style="color: #a31515"&gt;"CLEAN"&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: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Deleting: "&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;m_intNumFilesProcessed = 0;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;bool&lt;/span&gt; blnDeleted &lt;span style="color: blue"&gt;in&lt;/span&gt; DoClean(lst))&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;"File {0:G} deleted : "&lt;/span&gt; + lst[m_intNumFilesProcessed - 1],&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                  &lt;/span&gt;(blnDeleted ? &lt;span style="color: #a31515"&gt;"has been"&lt;/span&gt; : &lt;span style="color: #a31515"&gt;"NOT found or"&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;return&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;if&lt;/span&gt; (!isArg(&lt;span style="color: #a31515"&gt;"AUTO"&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;if&lt;/span&gt; (&lt;span style="color: #a31515"&gt;'N'&lt;/span&gt;.Equals(ConsoleAskYesNo(&lt;span style="color: #a31515"&gt;"Download this content? [Y/n]"&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: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"\n...aborted..."&lt;/span&gt;);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;return&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 style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;else&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;Console&lt;/span&gt;.Write(&lt;span style="color: #a31515"&gt;"Auto "&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: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"Downloading:"&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;///////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: green"&gt;// Display the progress&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;bool&lt;/span&gt; blnDownloaded &lt;span style="color: blue"&gt;in&lt;/span&gt; DoDownload(lst))&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;"{0:G}/{1:G} "&lt;/span&gt; &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ (blnDownloaded ? &lt;span style="color: #a31515"&gt;"Good: "&lt;/span&gt; : &lt;span style="color: #a31515"&gt;"Bad: "&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;+ lst[m_intNumFilesProcessed-1],&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;(m_intNumFilesProcessed), lst.Count);&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;br /&gt;
}&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="line-height: 115%; font-family: Courier; color: green; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;//ConsoleAskYesNo.cs&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&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; DownloadDnr&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CDownloadDnr&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;char&lt;/span&gt; ConsoleAskYesNo(&lt;span style="color: blue"&gt;string&lt;/span&gt; strQuestion)&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;char&lt;/span&gt; chrSelection = &lt;span style="color: #a31515"&gt;'\0'&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;char&lt;/span&gt;&amp;gt; GetUpperChar = &lt;span style="color: blue"&gt;delegate&lt;/span&gt;()&lt;br /&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: #2b91af"&gt;Console&lt;/span&gt;.ReadKey().KeyChar.ToString().ToUpper()[0]; };&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; strValid = &lt;span style="color: #a31515"&gt;"NY\n"&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;do&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;Console&lt;/span&gt;.WriteLine(strQuestion);&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;} &lt;span style="color: blue"&gt;while&lt;/span&gt; (!strValid.Contains(chrSelection = GetUpperChar()));&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; chrSelection;&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;br style="mso-special-character: line-break" /&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; color: green; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;//DnrResponse.cs&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;namespace&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt; DownloadDnr&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;CDnrResponse&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; strTitle&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;get&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &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;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;string&lt;/span&gt; strMp3&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;get&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &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;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;string&lt;/span&gt; strShowNum&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;get&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &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;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; CDnrResponse()&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;strTitle = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strMp3 = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strShowNum = &lt;span style="color: #a31515"&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 style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; CDnrResponse(&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt; dnr)&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;strTitle = dnr.strTitle;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strMp3 = dnr.strMp3;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;strShowNum = dnr.strShowNum;&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; CDnrResponse(&lt;span style="color: blue"&gt;string&lt;/span&gt; strTitle, &lt;span style="color: blue"&gt;string&lt;/span&gt; strMp3, &lt;span style="color: blue"&gt;string&lt;/span&gt; strShowNum)&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;.strTitle = strTitle.Trim();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.strMp3 = strMp3.Trim();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.strShowNum = strShowNum.Trim();&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;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;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; strTitle + &lt;span style="color: #a31515"&gt;" ("&lt;/span&gt; + strShowNum + &lt;span style="color: #a31515"&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 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;br /&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;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;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;br /&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().Equals(((&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt;)obj).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;}&lt;br /&gt;
}&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&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; color: green; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;//DoClean.cs&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&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.IO;&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; DownloadDnr&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CDownloadDnr&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;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;bool&lt;/span&gt;&amp;gt; DoClean(&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt;&amp;gt; lst_dnrFiles)&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;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; strTempPath = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempPath();&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt; dnrResp &lt;span style="color: blue"&gt;in&lt;/span&gt; lst_dnrFiles)&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;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="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; strTargetFile =&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                  &lt;/span&gt;strTempPath&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                  &lt;/span&gt;+ dnrResp.strMp3.Split(&lt;span style="color: #a31515"&gt;"\\/"&lt;/span&gt;.ToCharArray()).Last();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;m_intNumFilesProcessed++;&lt;br /&gt;
&lt;br /&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: #2b91af"&gt;File&lt;/span&gt;.Exists(strTargetFile))&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;}&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;else&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;File&lt;/span&gt;.Delete(strTargetFile);&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;System.Diagnostics.&lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                  &lt;/span&gt;&lt;span style="color: #a31515"&gt;"Delete Failed: "&lt;/span&gt; + 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;yield&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;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;br style="mso-special-character: line-break" /&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; color: green; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;//DoDownload.cs&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&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.IO;&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; System.Net;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; DownloadDnr&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CDownloadDnr&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;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;bool&lt;/span&gt;&amp;gt; DoDownload(&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt;&amp;gt; lst_dnrFiles)&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: #2b91af"&gt;WebClient&lt;/span&gt; wc = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WebClient&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;[] arr_strTemp = &lt;span style="color: blue"&gt;null&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; strTempDir = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempPath();&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: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt; dnrResp &lt;span style="color: blue"&gt;in&lt;/span&gt; lst_dnrFiles)&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;true&lt;/span&gt;;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;arr_strTemp = dnrResp.strMp3.Split(&lt;span style="color: #a31515"&gt;"\\/"&lt;/span&gt;.ToCharArray());&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;wc.DownloadFile(&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;Uri&lt;/span&gt;(dnrResp.strMp3), strTempDir + arr_strTemp.Last());&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;m_intNumFilesProcessed++;&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;System.Diagnostics.&lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                  &lt;/span&gt;&lt;span style="color: #a31515"&gt;"Download Failed: "&lt;/span&gt; + 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;yield&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;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;br style="mso-special-character: line-break" /&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; color: green; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;//GetMp3ListBySubject.cs&lt;br /&gt;
&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; color: blue; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&gt;using&lt;/span&gt;&lt;span style="line-height: 115%; font-family: Courier; font-size: 12pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'"&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; System.Xml.Linq;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; DownloadDnr&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CDownloadDnr&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&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;// Return the list of MP3s containing titles or descriptions matching the&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="color: green"&gt;// given criteria.&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; &lt;span style="color: blue"&gt;bool&lt;/span&gt; GetMp3ListBySubject(&lt;span style="color: blue"&gt;string&lt;/span&gt; strSubject,&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt;&amp;gt; lst_dnrRetVal, &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;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: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;XAttribute&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; UnUrl = s =&amp;gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;s.ToString().Replace(&lt;span style="color: #a31515"&gt;"url="&lt;/span&gt;, &lt;span style="color: #a31515"&gt;""&lt;/span&gt;).Replace(&lt;span style="color: #a31515"&gt;"\""&lt;/span&gt;, &lt;span style="color: #a31515"&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: #2b91af"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; EpNum = s =&amp;gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;s.ToString().Split(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #a31515"&gt;"=&amp;lt;&amp;gt;"&lt;/span&gt;.ToCharArray(), &lt;span style="color: #2b91af"&gt;StringSplitOptions&lt;/span&gt;.RemoveEmptyEntries)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;.Where(s2 =&amp;gt; !s2.Equals(&lt;span style="color: #a31515"&gt;"/guid"&lt;/span&gt;)).ToArray().Last();&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: 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: blue"&gt;string&lt;/span&gt; strUpSubj = strSubject.ToUpper();&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;// Load the page as an XML document&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt; xdocDotNetRocks = &lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;.Load(&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: #a31515"&gt;"http://www.pwop.com/feed.aspx?show=dotnetrocks&amp;amp;filetype=master#"&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;////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: green"&gt;// SELECT title, mp3, episodeNum FROM xdocDotNetRocks&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;WHERE (UPCASE(title) LIKE '%LINQ%') &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;OR (UPCASE(description) LIKE '%LINQ%')&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;OR (UPCASE(guid) LIKE '%LINQ%');&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;lst_dnrRetVal =&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;from&lt;/span&gt; &lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt; xe &lt;span style="color: blue"&gt;in&lt;/span&gt; xdocDotNetRocks.Descendants(&lt;span style="color: #a31515"&gt;"item"&lt;/span&gt;)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; strTitle = xe.Element(&lt;span style="color: #a31515"&gt;"title"&lt;/span&gt;).Value&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; strEpNum = EpNum(xe.Element(&lt;span style="color: #a31515"&gt;"guid"&lt;/span&gt;))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; strMp3 = UnUrl(xe.Element(&lt;span style="color: #a31515"&gt;"enclosure"&lt;/span&gt;).Attributes(&lt;span style="color: #a31515"&gt;"url"&lt;/span&gt;).First())&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; strDesc = xe.Element(&lt;span style="color: #a31515"&gt;"description"&lt;/span&gt;).Value&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;where&lt;/span&gt; strTitle.ToUpper().Contains(strUpSubj)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;|| strDesc.ToUpper().Contains(strUpSubj)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;|| strEpNum.Equals(strUpSubj)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;               &lt;/span&gt;&lt;span style="color: blue"&gt;select&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CDnrResponse&lt;/span&gt;(strTitle, strMp3, strEpNum)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;).Distinct().ToList&amp;lt;&lt;span style="color: #2b91af"&gt;CDnrResponse&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;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;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;br /&gt;
}&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
&lt;br style="mso-special-character: line-break" /&gt;
 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137257"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137257" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137257.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2009/12/29/linqtoxml.aspx</guid>
            <pubDate>Wed, 30 Dec 2009 05:32:17 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137257.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2009/12/29/linqtoxml.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137257.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137257.aspx</trackback:ping>
        </item>
        <item>
            <title>There is no disc in the drive. (fixed)</title>
            <link>http://geekswithblogs.net/THines01/archive/2009/12/18/nodiskincddrive.aspx</link>
            <description>&lt;p&gt;YES THERE IS!&lt;/p&gt;
&lt;p&gt;I'm using a Dell Latitude D620 Laptop (with Windows XP Pro).&lt;br /&gt;
I burn a lot of CDs for various reasons.&lt;br /&gt;
One error from the CD Writing Wizard I frequently receive (and have not yet found a permanent solution) is the "There is no disc in the drive." / "Insert a writable disc to continue." error -- even when there IS, in fact, a disc in the drive.&lt;/p&gt;
&lt;p&gt;Rebooting will SOMETIMES fix the problem, but is not necessary.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" width="406" height="263" src="/images/geekswithblogs_net/THines01/CD_Burning/1_Wizard_Fail.jpg" /&gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;To fix this, I'll go to the drive properties of the CD RW drive (right click) and select the "Recording" tab.&lt;br /&gt;
Once there, I'll UNCHECK the "Enable CD recording on this drive" checkbox and click "Apply".&lt;/p&gt;
&lt;p&gt;&lt;img alt="" width="367" height="275" src="/images/geekswithblogs_net/THines01/CD_Burning/2_Drive_Properties.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
A message will appear and I'll click "Yes" to continue.&lt;br /&gt;
&lt;img alt="" width="425" height="119" src="/images/geekswithblogs_net/THines01/CD_Burning/3_CD_Writing_Option.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
I'll then go back into the properties and re-check that same checkbox and click "OK".&lt;br /&gt;
Then right-click the drive and tell it to "Write these files to CD".&lt;br /&gt;
&lt;img alt="" width="348" height="274" src="/images/geekswithblogs_net/THines01/CD_Burning/4_Reburn.jpg" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Works every time:&lt;br /&gt;
&lt;img alt="" width="286" height="260" src="/images/geekswithblogs_net/THines01/CD_Burning/5_Success.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I've gotten very accustomed to doing this and it no longer surprises me when it happens.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137119"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137119" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137119.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2009/12/18/nodiskincddrive.aspx</guid>
            <pubDate>Fri, 18 Dec 2009 21:20:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137119.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2009/12/18/nodiskincddrive.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137119.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137119.aspx</trackback:ping>
        </item>
        <item>
            <title>CInternetSession Debug Assertion Failed (Fixed)</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2009/12/18/cinternetsessionexception.aspx</link>
            <description>&lt;p&gt;I had completely forgotten about the Debug Assertion Failure when invoking the MFC CInternetSession from a console application.&lt;/p&gt;
&lt;p&gt;I recently needed to teach an Old Dog a New Trick by performing an MFC FTP upload from a .NET (C#) console application.&lt;/p&gt;
&lt;p&gt;When running the app in debug mode, I got the "Debug Assertion Failed" dialog box that requires an answer of Abort, Retry or Ignore.&lt;/p&gt;
&lt;p&gt;I remembered (from long ago) this is a benign error and can just be ignored (if you want to press a button), but I didn't want any surprises and I wanted "clean" code.&lt;/p&gt;
&lt;p&gt;In the rare instance someone else might run across this, &lt;strong&gt;here is the SHORT solution&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Modify your header to include &amp;lt;afx.h&amp;gt;, &amp;lt;afxinet.h&amp;gt; and &amp;lt;afxwin.h&amp;gt;&lt;/li&gt;
    &lt;li&gt;Add a module-level instance of CWinApp (yes, even in a console app).&lt;/li&gt;
    &lt;li&gt;Set a value in your code for the variable afxCurrentAppName before invoking the CInternetSession&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;Here is the LONG solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The error reported says there is a failure in the file afxwin1.inl at line 29.&lt;br /&gt;
After some disk searching, I found the file, afxwin1.inl, and saw the problem line 29:&lt;br /&gt;
&lt;img border="1" alt="" width="552" height="28" src="/images/geekswithblogs_net/THines01/CInternetSession/2_Line29.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;...which simply checks to see if the variable afxCurrentAppName has a value.&lt;/p&gt;
&lt;p&gt;afxCurrentAppName is an alias for AFX_MODULE_STATE::m_lpszCurrentAppName of type LPCTSTR in file afxstat_.h that is NOT automatically when making a console app (deeper explanation not given in this post).&lt;/p&gt;
&lt;p&gt;Here's a test line of code that will cause the error:&lt;br /&gt;
&lt;img border="1" alt="" width="252" height="73" src="/images/geekswithblogs_net/THines01/CInternetSession/0_Offending_Code.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Here is the dialog box showing the Debug Assertion Failure:&lt;br /&gt;
&lt;img alt="" width="479" height="217" src="/images/geekswithblogs_net/THines01/CInternetSession/1_CInternetSessionDebugAssertion.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Here are the modifications to stop the error:&lt;br /&gt;
First, modify the header:&lt;br /&gt;
&lt;img border="1" alt="" width="576" height="164" src="/images/geekswithblogs_net/THines01/CInternetSession/3_Update_StdAfx.h.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;...then modify the code:&lt;br /&gt;
&lt;img border="1" alt="" width="459" height="91" src="/images/geekswithblogs_net/THines01/CInternetSession/4_afxCurrentAppName.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I have not run across any negative side-effects by doing this.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137063"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137063" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/137063.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2009/12/18/cinternetsessionexception.aspx</guid>
            <pubDate>Fri, 18 Dec 2009 19:08:19 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/137063.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2009/12/18/cinternetsessionexception.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/137063.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/137063.aspx</trackback:ping>
        </item>
        <item>
            <title>GZipLib (playing with GZipStream)</title>
            <category>Code</category>
            <link>http://geekswithblogs.net/THines01/archive/2009/10/16/gziplib.aspx</link>
            <description>&lt;p&gt;I recently needed to un-gzip (gUnzip?) a large amount of files programatically and eventually ended up with the class/library posted below.&lt;/p&gt;
&lt;p&gt;With the GZipStream (.NET / dot net), I had seen a lot of examples compressing and decompressing strings in memory, but I needed the straight-forward, simple method of just compressing and inflating/decompressing a file (in the simplest manner).&lt;/p&gt;
&lt;p&gt;I made the buffer size modifiable to allow you to customize the amount of RAM needed for the process.&lt;/p&gt;
&lt;p&gt;In all of this, I discovered the proper way to name a .gz file is the name of the contents (1 file) plus the extension .gz.&lt;/p&gt;
&lt;p&gt;Example: manish.txt becomes manish.txt.gz.&lt;/p&gt;
&lt;p&gt;This helps tools like WinZip decipher the contents as that .gz name is used when inflating/decompressing.&lt;/p&gt;
&lt;p&gt;With this class, you can compress and decompress with or without the output filenames.&lt;/p&gt;
&lt;p&gt;I originally posted the C# (csharp) code here, but it was a bit sloppy, so I zipped the project (with WinZip (ha ha)).&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://beltontroop111.org/Resources/GZipLib.zip"&gt;Download the project here&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.IO.Compression;

&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;img border="0" alt="GZipLib Class Diagram Snippet" width="664" height="409" src="/images/geekswithblogs_net/THines01/GZipLib.cd.jpg" /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;
&lt;pre&gt;&lt;br /&gt;Here is a tester for the library:&lt;/pre&gt;
&lt;pre&gt;&lt;img alt="" width="681" height="494" src="/images/geekswithblogs_net/THines01/GZipLib.Test.jpg" /&gt;&lt;/pre&gt;
&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135504"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135504" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/THines01/aggbug/135504.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Tom Hines</dc:creator>
            <guid>http://geekswithblogs.net/THines01/archive/2009/10/16/gziplib.aspx</guid>
            <pubDate>Fri, 16 Oct 2009 18:19:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/THines01/comments/135504.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/THines01/archive/2009/10/16/gziplib.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/THines01/comments/commentRss/135504.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/THines01/services/trackbacks/135504.aspx</trackback:ping>
        </item>
    </channel>
</rss>