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>. Если кто знает почему это именно так работает может рассказать или дать ссылку на материал прям по этой теме. Спасибо тем кто пытался найти решение.