Реактивные расширения - перекачка предметов из одной коллекции в другую - PullRequest
1 голос
/ 31 декабря 2010

У меня есть коллекция IEnumerable, и я хочу перекачать элементы в другую коллекцию за одну секунду.Как мне этого добиться?Есть так много новых методов расширения.Я не знаю, что использовать, где еще.

Ответы [ 2 ]

4 голосов
/ 31 декабря 2010
list1.ToObservable() // Convert list1 to Observable
    .Zip(
        Observable.Interval(TimeSpan.FromSeconds(1)), // Zip it with an observable that ticks every second
        (list, timerList) => list // select list1 only
    ).
Subscribe((item) =>
{
    list2.Add(item); // on each tick, add an item to list2
});
0 голосов
/ 31 декабря 2010

Вот один из способов, которым вы могли бы это сделать.Я не говорю, что это самый "Rx" способ, заметьте (мой опыт с Rx все еще несколько ограничен).

public static IEnumerable<T> Delay(this IEnumerable<T> source, int interval)
{
    foreach (T item in source)
    {
        Thread.Sleep(interval);
        yield return item;
    }
}

А потом:

var source = firstCollection.Delay(1000).ToObservable();
source.Subscribe(x => secondCollection.Add(x));
...