[#] Сравнение строк в C# (по умолчанию)
habrabot(difrex,1) — All
2016-02-02 13:30:03


Часто бывает, что мы соединяем 2 коллекции или группируем коллекцию при помощи [LINQ to Objects][1]. При этом происходит сравнение ключей, выбранных для группировки или связывания. К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, [указав IEqualityComparer<string> явно][2], сделать эту операцию быстрее?

clients.Join(orders,
c => c.Name,
o => o.ClientName,
(c, o) => 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