Is this the optimal way to write "find these IDs in a list of objects" using linq?
Use a Dictionary&lt;int, Organization&gt; to look up organizations by their IDs quickly.

Your code will then look like this: OrganizationIdList.Select(id =&gt; organizations[id])....



Given your clarification in the comments that your are getting organizations from a database, you should let the database do the hard work for you. The code will depend upon the ORM you're using, but a relatively SQL-agnostic version of the query will look like this:

SELECT organization_id, division, name FROM organizations WHERE organization_id IN (?)


or this:

SELECT organization_id, division, name FROM organizations JOIN user_organizations
USING (organization_id) WHERE user_id = ?