title: Is there an IDictionary implementation that keeps the keys in the order they were added ? (NOT sorted order)
body: <p>I guess everything is in the title...</p>
  
  <p>I know that <code>Dictionary&lt;TKey,TValue&gt;</code> does keep the keys in addition order, but only as long as you don't remove any, and anyway this behavior is not documented and can't be relied upon (see <a href="https://stackoverflow.com/questions/154307/why-are-entries-in-addition-order-in-a-net-dictionary">this question</a> for details).</p>
  
  <p>Basically, what collection should I use if I want an ordered collection of key/value pairs, while keeping an O(1) access time? (<code>List&lt;KeyValuePair&lt;K,V&gt;&gt;</code> isn't a good option since it would have O(n) access time). I don't think there is anything like that in the BCL, but I just want to be sure before I roll my own...</p>
  
  <p>Just to make it clear to everyone: I don't want the keys to be <em>sorted</em>, I just want them to remain in addition order. So <code>SortedList</code>/<code>SortedDictionary</code> are not what I'm looking for...</p>