My current implementation is I have large number of objects in my collection. Items are inserted only once i.e at start up.
And then this list is used for searching and fetching objects from it.
Each object is is assigned to particular type having int value.
e.g In a list of 100 items of ice-cream objects, 20 belong to vanilla category, 25 belong to mango and so on. Categories have unique int identifier.
Should I replace current implementation with Dictionary<int,List<ice-cream>> for better performance?
Performance aside (100 items are peanuts);
I think your code should reflect what your intentions are. If you intend to treat these objects as a list, then you should have a list. But as you are performing lookup based on id, you should have a Dictionary.
And you should wrap this dictionary in a (static/singleton) class and not pass this dictionary around all willy nilly. Especially if you require thread safety.