Use a generic Dictionary:

List&lt;string&gt; names = new List&lt;string&gt;(); // this is the main list with strings
Dictionary&lt;string, List&lt;string&gt;&gt; dict = new Dictionary&lt;string, List&lt;string&gt;&gt;();

foreach (string name in names)
{
    if (!dict.ContainsKey(name))
        dict.Add(name, new List&lt;string&gt;());
    dict[name].Add("another one bytes the dust :)");
}  


In the above example, you will have a Dictionary with amount of keys equals to the number of unique names, and you can find duplicates by keys having more than one item in their associated List.

For example:

string[] dupes = dict.Keys.ToList().Find(k =&gt; dict[k].Count &gt; 1).ToArray();


create a list (or any variable) dynamically, add data to each list and later compare them in C#
I was browsing through mics on Amazon and quickly realized I was out of my depth.  There are a couple closely related questions I am wondering about:


Are there different types of mics for (1) singing into at a concert, (2) singing into in a quiet room, and (3) picking up sound at more of a distance (e.g., singing and playing guitar and having both recorded with the one mic)?  What are they?
I'm most interested in a mic for case (3).  This is obviously not professional, I just want something with passable quality and not too much noise considering I'll be in a random room in a house or apartment.  What kind of things should I look for in a mic to achieve that?  What are the factors that most depend on price?  (If it's feasible I'd like to try to fit it into my $50 contest reward.)
There are a few terms I saw like "moving coil", "condenser", and "dynamic" that I saw used to describe mics.  If you could touch on these and any other relevant terminology that would be awesome.

