none
LINQ Как читать аргументы селекторов RRS feed

  • Вопрос

  • Например, Enumerable.Join имеет в msdn 2 перегрузки:

    Join<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>)


    Join<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>, IEqualityComparer<TKey>)


    Как разобраться, к примеру, что можно указывать на месте типов

    IEnumerable<TOuter>

    и

    Func<TOuter, TInner, TResult>

    Может, это объяснено в каких-то книгах и статьях, и я упустил?

    12 февраля 2015 г. 15:24

Ответы

  • Добрый день.

    Ну а прочитать в MSDN что там пишут? Например, про ваши вопросы:

    outer
    Тип: System.Collections.Generic.IEnumerable<TOuter>
    Первая последовательность для соединения.

    Т.е. на этом месте может быть любая коллекция поддерживающая интерфейс IEnureable и тип ее элементов должен совпадать со всеми теми местами, где в сигнатуре указан TOuter

    Или второй вопрос:

    resultSelector
    Тип: System.Func<TOuter, TInner, TResult>
    Функция для создания результирующего элемента для пары соответствующих элементов.

    Т.е. на этом месте должен быть метод принимающий два параметра (типу которых должны совпадать со всеми элементами указанными на других позициях сигнатуры) и возвращающий третий тип TResult. Причем, т.к. TResult упоминается только в самом Join, то это может быть любой тип, если вы явно не указали его у Join.

    Про generic типы почитайте вот здесь.


    13 февраля 2015 г. 6:00
    Отвечающий