Кажется, вы хотите что-то вроде этого:
first -----1------------2-------------3--4--------->
| | | |
second ---------A--B----------C-D-E-----------F---G->
| | |
final ---------A-------------C---------------F----- >
Для этого должна работать комбинация SelectMany
, Take
и TakeUntil
.Я бы сказал:
var final = from f in first
from s in second.Take(1).TakeUntil(first)
select s;
.Take(1)
гарантирует, что вы получите только первый предмет после первого (для 1, 2 и 4)..TakeUntil(first)
охватывает 3, так что F передается только один раз (до 4).Если у вас есть подходящее имя для этой операции, было бы легко заключить метод, принимающий две наблюдаемые в качестве параметров.