title: Using a List, Lookup or Dictionary for a large list of data
body: <p>I have a static class in my Class Library called Lookup, I am using this class to look up different values (in this case Locations). </p>
  
  <p>These values can number into the hundreds. Since 95% of my customers install my app on a machine without Internet access I have to assume that my applications will not have internet access nor access to a database. </p>
  
  <p>So I want to know if this is an efficient way of handling this and if I am properly disposing the object when the method is done:</p>
  
  <p><strong>CODE :</strong></p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  
  namespace FunctionLibrary
  {
      public static class Lookups
      {
          private static List&lt;Vers&gt; Versions;
  
          public static string GetVersion(string s)
          {
              string retValue = string.Empty;
              Versions = new List&lt;Vers&gt;();
  
              try
              {
                  if (s.Trim().Length &gt; 0)
                  {
  
                      GetVersions();
                      retValue = Versions.Find(ver =&gt; ver.VersionNumber == s).VersionLiteral;
  
                      if (string.IsNullOrEmpty(retValue))
                      {
                          retValue = string.Format("{0} is an Unknown Version Number", s);
                      }
                  }
                  else
                  {
                      retValue = "No version number supplied";
                  }
              }
              catch
              {
                  retValue = string.Format("{0} is an Unknown Version Number", s);
              }
              finally
              {
                  Versions.Clear();
                  Versions = null;
              }
              return retValue;
          }
  
          private static void GetVersions()
          {
              Versions.Add(new Vers() { VersionNumber = "0000", VersionLiteral = "Location 1" });
              Versions.Add(new Vers() { VersionNumber = "0001", VersionLiteral = "Location 2" });
              Versions.Add(new Vers() { VersionNumber = "0002", VersionLiteral = "Location 3"});
              Versions.Add(new Vers() { VersionNumber = "0003", VersionLiteral = "Location 4"});
              Versions.Add(new Vers() { VersionNumber = "0004", VersionLiteral = "Location 5"});
              Versions.Add(new Vers() { VersionNumber = "0005", VersionLiteral = "Location 6"});
              Versions.Add(new Vers() { VersionNumber = "0006", VersionLiteral = "Location 7"});
              Versions.Add(new Vers() { VersionNumber = "0007", VersionLiteral = "Location 8"});
          }
      }
  
      public class Vers
      {
  
          public string VersionLiteral { get; set; }
          public string VersionNumber { get; set; }
     }
  }
  </code></pre>
  
  <p>I am also wondering if I should use a Dictionary or a Lookup instead of the list. I just don't want multiple calls to this method to cause memory issues.</p>