<p>Does anyone know if there is a good equivalent to Java's <code>Set</code> collection in C#? I know that you can somewhat mimic a set using a <code>Dictionary</code> or a <code>HashTable</code> by populating but ignoring the values, but that's not a very elegant way. </p>

Try
HashSet
:
The HashSet(Of T) class provides high-performance set operations. A set is a collection that contains no duplicate elements, and whose elements are in no particular order...
The capacity of a HashSet(Of T) object is the number of elements that the object can hold. A HashSet(Of T) object's capacity automatically increases as elements are added to the object.
The HashSet(Of T) class is based on the model of mathematical sets and provides high-performance set operations similar to accessing the keys of the
Dictionary(Of TKey, TValue)
or
Hashtable
collections. In simple terms, the HashSet(Of T) class can be thought of as a
Dictionary(Of TKey, TValue)
collection without values.
A HashSet(Of T) collection is not sorted and cannot contain duplicate elements...