LINQ метод Join() возвращает только первое значение удовлетворяющее условию а не все

Здравствуйте столкнулся с такой проблемой при обработке перечислений с помощью LINQ метода Join() возвращается не все возможные варианты удовлетворяющие условию а только первое найденное. известно что таких соединений 5 шт.

var path = pathOnStart
    .Join(pathOnChestToExit,
        p => p.Value,
        g => g.Value,
        (p, g) => new { p, g, l = p.Length + g.Length });

pathOnStart и pathOnChestToExit перечисления связных списков IEnumerable<SinglyLinkedList<Point>>.

вот код самих списков

public class SinglyLinkedList<T> : IEnumerable<T>
{
    public readonly T Value;
    public readonly SinglyLinkedList<T> Previous;
    public readonly int Length;

    public SinglyLinkedList(T value, SinglyLinkedList<T> previous = null)
    {
        Value = value;
        Previous = previous;
        Length = previous?.Length + 1 ?? 1;
    }

Ответы (1 шт):

Автор решения: Илья

решение нашел. Как решил: IEnumerable<SinglyLinkedList<Point>> привел к виду List<SinglyLinkedList<Point>> и все заработало, мое предположение что при создании переменной IEnumerable<T> она создается лениво и почему-то join не проходит после первого найденного условия. тоже самое происходит с foreach вложенным в foreach если входные перечисления IEnumerable<T>. Если кто знает почему это именно так работает может рассказать или дать ссылку на материал прям по этой теме. Спасибо тем кто пытался найти решение.

→ Ссылка