Illustrates how to use Rx in an dotnet core api.
[HttpGet("multi-get")]
public async Task<IActionResult> GetUsers([FromQuery] string ids)
{
IEnumerable<long> request = ids.ToEnumerable();
return await TaskExecutor.ExecuteAsync(this.userQuery.GetById(request));
}
public IObservable<IEnumerable<MultiGetDto<UserDto>>> GetById(IEnumerable<long> elements)
{
return elements
.Select(id => this.GetById(id)
.Map(userDto => userDto != null
? MultiGetDto<UserDto>.CreateOk(userDto)
: MultiGetDto<UserDto>.CreateNotFound(new UserDto
{
Id = id
})))
.Merge(10, Scheduler.Default)
.ToList()
.Map(multiGetDtos => multiGetDtos
.OrderBy(multiGetDto => multiGetDto.Body!.Id)
.AsEnumerable());
}