Оператор объединения LINQ использует Вложенный цикл, Слияние или Соединения HashSet?

Вы можете создать подкласс django-auth-ldap, чтобы добавить возможности AD поверх SASL, Kerberos или чего-либо еще. Вот пример 2018 года, работающий в Django 2.1:

https://partofthething.com/blyts/authenticating-and-population-users-in-django-using-a-windows-active-directory- и-SASL /

6
задан aattia 13 October 2009 в 17:08
поделиться

1 ответ

Сначала он эффективно создает поиск из «внутренней» последовательности, а затем выполняет итерацию по внешней последовательности. Затем он может найти каждый ключ во внешней последовательности и получить каждую подходящую пару. Что-то вроде этого (игнорирование проверки аргументов и т. Д.):

public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>
    (this IEnumerable<TOuter> outer,
     IEnumerable<TInner> inner,
     Func<TOuter, TKey> outerKeySelector,
     Func<TInner, TKey> innerKeySelector,
     Func<TOuter, TInner, TResult> resultSelector)
{
    Lookup<TKey, TInner> lookup = inner.ToLookup(innerKeySelector);
    foreach (TOuter outerItem in outer)
    {
        TKey key = outerKeySelector(outerItem);
        foreach (TInner innerItem in lookup[key])
        {
            yield return resultSelector(outerItem, innerItem);
        }
    }
}

Поиск будет использовать внутреннюю хеш-таблицу для ключей, так что будет эффективно искать любой отдельный ключ.

9
ответ дан 10 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: