Well, you seem to have answered yourself? If you need a quick query on a dataset, then a dictionary can be better than a flat list (for the large data sizes that you have).
You could, for example, use this object as your own key -
Dictionary<CustomObject,CustomObject> ...
Note that the meaning of equality depends on the context. If you pass the source link, then it's fine - ContainsKey will do the job. If you have a different object than the one for the purpose, to compare with it, then you will need to implement your own GetHashCode() , Equals() and ideally IEquatable<CustomObject> . Either in CustomObject or in custom IEqualityComparer<CustomObject> .
source share