With 400k objects, I wonder if the database would be a more suitable answer (either in the process or outside the process). This then abstracts the process of creating the index. In particular, any database will support several different indexes on different columns (columns), making queries quoted by all very convenient without the need for coding specifically for each (just let the query optimizer worry about this).
Working with it in memory may be valid, but you can (with vanilla.NET) do a lot more manual index management. The sounds of this i4o are definitely worth exploring, but I don't have any existing comparison data.
source
share