Appropriate data structure for fast searching "between" pairs of longs
<p>I currently (conceptually) have:</p>

<pre><code>IEnumerable&lt;Tuple&lt;long, long, Guid&gt;&gt;
</code></pre>

<p>given a <code>long</code>, I need to find the "corresponding" <code>GUID</code>.</p>

<p>the pairs of <code>long</code>s should never overlap, although there may be gaps between pairs, for example:</p>

<pre><code>1, 10, 366586BD-3980-4BD6-AFEB-45C19E8FC989
11, 15, 920EA34B-246B-41B0-92AF-D03E0AAA2692
20, 30, 07F9ED50-4FC7-431F-A9E6-783B87B78D0C
</code></pre>

<p>For every input <code>long</code>, there should be exactly <code>0</code> or <code>1</code> matching <code>GUID</code>s.</p>

<p>so an input of <code>7</code>, should return <code>366586BD-3980-4BD6-AFEB-45C19E8FC989</code></p>

<p>an input of <code>16</code> should return <code>null</code></p>

<p><strong>Update:</strong> I have about 90K pairs</p>

<p>How should I store this in-memory for fast searching?</p>

<p>Thanks</p>
