title: C# Fastest way to find the index of item in a list
body: <p>I want to know what is the fastest way to find the index of an item in a list. The reason I want to know is because I am making a XNA render but I started getting out of memory exceptions on larger models when I only used a vertex buffer, so I have now implemented an index buffer system. My problem is that I now have to continuously scan a list containing all my Vector3s for the index of the one that I want placed next in my index buffer. I am currently scanning for indices like this:</p>
  
  <pre><code>        for (int i = 1; i &lt; circleVect.Length; i++)
          {
              indices.Add(vertices.FindIndex(v3 =&gt; v3 == circleVect[i]));
              indices.Add(vertices.FindIndex(v3 =&gt; v3 == circleVect[i - 1]));
              indices.Add(vertices.FindIndex(v3 =&gt; v3 == middle));
          }
  </code></pre>
  
  <p>This works fine except for the fact that it is rather slow. It takes almost 1 second for one cylinder to be calculated and I have more than 70 000 of them in my large model. I have therefore been seeing a loading screen for more than 20 minutes while loading my larger model and it still is not completed. This is unfortunately simply unacceptable. If I try loading my smaller model it takes more than 5 minutes whereas the unindexed loader took merely a second or so.</p>
  
  <p>I have absolutely no formal training in C# and even less in XNA so I know this is probably a very inefficient way of calculating the indices so I would therefore appreciate it if any of you could assist me in creating a more efficient importer.</p>
  
  <p>PS. If necessary I can change the list to an array but this would be a last resort option because it could potentially put strain on the system memory (causing an exception) and would mean quite a bit of coding for me. </p>