 <p>You can use <a href="http://msdn.microsoft.com/en-us/library/bb300779.aspx">Enumerable.Except</a> to get distinct items from lines3 which is not in lines2:</p> <pre><code>lines2.AddRange(lines3.Except(lines2)); </code></pre> <p>If lines2 contains all items from lines3 then nothing will be added. BTW internally Except uses <code>Set&lt;string&gt;</code> to get distinct items from second sequence and to verify those items present in first sequence. So, it's pretty fast.</p>