<p>What would be the best hashing algorithm if we had the following priorities (in that order):</p>

<ol>
<li>Minimal hash collisions</li>
<li>Performance</li>
</ol>

<p>It doesn't have to be secure. Basically I'm trying to create an index based on a combination of properties of some objects. <strong>All the properties are strings</strong>.</p>

<p>Any references to c# implementations would be appreciated.</p>

There is no one single optimum hashing algorithm.  If you have a known input domain you can use a perfect-hashing generator such as
gperf
to generate a hashing algorithm that will get a 100% rate on that particular input set.  Otherwise, there is no 'right' answer to this question.