Часто бывает, что мы соединяем 2 коллекции или группируем коллекцию при помощи [LINQ to Objects][1]. При этом происходит сравнение ключей, выбранных для группировки или связывания. К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, [указав IEqualityComparer<string> явно][2], сделать эту операцию быстрее?
clients.Join(orders,
c =&gt; c.Name,
o =&gt; o.ClientName,
(c, o) =&gt; CreateOrederDto(c, o));
Как же выбирается реализация компаратора, если пользователь не указал её явно? [Пороемся в исходном коде coreclr][3]
[1]:
https://msdn.microsoft.com/en-us/library/bb397919.aspx
[2]:
https://msdn.microsoft.com/en-us/library/bb549267(v=vs.110).aspx
[3]:
https://habrahabr.ru/post/274491/#habracut