 <p>One slow but clear way would be</p> <pre><code>var matched = cars.Where(car =&gt; intList.Contains(car.id)).ToList(); </code></pre> <p>You can make this quicker by turning the <code>intList</code> into a dictionary and using <code>ContainsKey</code> instead.</p> <pre><code>var intLookup = intList.ToDictionary(k =&gt; k); var matched = cars.Where(car =&gt; intLookup.ContainsKey(car.id)).ToList(); </code></pre> <p>Even better still, a <code>HashSet</code>:</p> <pre><code>var intHash = new HashSet(intList); var matched = cars.Where(car =&gt; intHash.Contains(car.id)).ToList(); </code></pre>