Need to optimize this line of code...Recognitions table has 6500000 Records...
I suspect dropping the current design and moving to a standard load process is the best approach. Unfortunately, you continue to post questions as if the community can see your source code and we understand the design intent.
The Contains method generates an IN clause which is ok for small lists. For large lists a join with proper indexes is far more performant.
If the list of reportableResultIds are coming from an external source then load the reportableResultIds in to a table.
If the reportableResultIds are coming from the database that contains the Recognitions table then use standard SQL constructs not LINQ. Keep in mind, if the reportableResultIds are coming from the database that contains the Recognitions table that means the reportableResultIds are copied from SQL to the client application and back to SQL with an IN clause. Plus the resulting SQL generated by LINQ is not optimal. This design wastes bandwidth and clock cycles.
Basically, I'm recommending that you design a SQL solution rather than LINQ.