In C#, I find myself using a List, IList or IEnumerable 99% of the time. Is there a case when it would be b
You use a hashtable (dictionary) when you want fast look up access to an item based on a key.
If you are using List, IList or IEnumerable generally this means that you are looping over data (well in the case of IEnumerable it definitely means that), and a hashtable isn't going to net you anything. Now if you were looking up a value in one list and using that to access data in another list, that would a little different. For example:
Here is a link describing the different datatypes.
Another link.