У меня есть набор элементов, которые я хочу преобразовать (в основном, обернуть в метаданные). Для первого элемента в коллекции я просто обертываю необходимые метаданные вокруг элемента, и все готово. Метаданные второго элемента зависят от метаданных предыдущего элемента, поэтому я хочу передать метаданные первого элемента ко второму элементу.Подача текущего элемента в следующий элемент в запросе LINQ
Следующая ....
object[] A;
A.skip(1)
.Zip(A, (first, second), a => new Metadata(first, second));
... не будет работать, потому что он использует object
как второй вход, а не Metadata
. Это верно для любого другого решения, которое я видел до сих пор (передача исходного объекта, а не результат функции Select()
).
Как я могу передать результат Select()
для первого элемента в моем запросе LINQ в Select()
для второго элемента?
Я знаю, что я мог бы использовать цикл for
, чтобы выполнить это, но мне интересно, нет ли более функционального способа решения этой проблемы. Должно быть решение в языках функционального стиля, таких как F #, и мне интересно, могу ли я перевести это в решение LINQ на C#. Решение с одним вкладышем было бы особенно удивительным.
Объединив метаданные вместе, я могу передать важную информацию из одного элемента во все следующие элементы, такие как флаги или контекст. Цель, в конечном счете, состоит не только в том, чтобы знать о предыдущем элементе, но и во всем контексте текущего элемента. Текущий пункт может затем изменить контекст для всех следующих элементов и т. Д.
Спасибо! Если вам интересно, я применил эту функцию к [этому вопросу/ответу] (http://stackoverflow.com/a/17345950/211627). – JDB
@ Cyborgx37, хорошо! – MisterMetaphor