Преимущества ручного поиска соединения в LINQ?

Является ли построение и использование метода ручного поиска (ILookup<T>) более быстрым, чем использование соединения с Join или GroupJoin в локальной последовательности IEnumerable<T> в LINQ?

Я где-то читал, что компилятор фактически переводит внутреннюю последовательность Join и GroupJoin в ILookup<T>.

Каким бы преимуществам ILookup<T> можно было использовать его на себе?

Ответ 1

Это зависит. Если вы работаете с объектами, основанными на DataContext, соединение переводится полностью вниз на SQL-сервер через оператор select. ЕСЛИ его POCO (или, более конкретно, обычная коллекция CLR) или что-то еще, то да, его используют как ILookup.