У вашего кода есть несколько проблем.
Сначала, если вы хотите заблокировать, пока Rx не вернется, тогда использование Rx не имеет особого смысла.Это должно быть о том, чтобы не блокировать.Таким образом, вы должны действительно возвращать IObservable<string>
, а не string
.
Кроме того, чтобы в вашем запросе было OrderByDescending
, вы должны использовать перечислимое, а не наблюдаемое, поэтому каким-то образом ваш запрос должен превратиться в наблюдаемый.
И ForkJoin
, похоже, ничего не делает для вас в этом запросе.Почему вы его использовали?
Все операторы Do
& Finally
тоже не имеют особого смысла.
В любом случае, я не смог бы преобразовать ваш код в нечтоэто компилируется, но я получил это близко.Начните с этого и скажите, что нужно изменить.
public static IObservable<string> GetRedemeptionNumber()
{
var _batchNumber = "test";
var q =
_context.GetRedemptionsQuery()
.Where(x => x.ReceiveBatchName.StartsWith(_batchNumber))
.OrderByDescending(x => x.ReceiveBatchName)
.Take(1);
return (from u in _context.QuerySingleOrDefault(q)
from z in u
select z.Name).Take(1);
}