【发布时间】:2011-07-27 23:04:53
【问题描述】:
我有以下代码。我的方法有一个字符串返回类型。
public string GetRedemeptionNumber()
{
string _batchNumber = "test";
var _loadBatchName = Observable.ForkJoin(_context.QuerySingleOrDefault(
_context.GetRedemptionsQuery().Where(x => x.ReceiveBatchName.StartsWith(_batchNumber))
.OrderByDescending(x => x.ReceiveBatchName)
.Take(1)))
.Do(u => _redemptionBatch = u.FirstOrDefault())
.Select(x => new Unit())
.Finally(() =>
{
_batchNumber = _redemptionBatch.Name;
//this doesnt work since a return isnt allowed
return _batchNumber;
}
});
_loadBatchName.Subscribe();
return _batchNumber;
}
我的问题是这会在设置之前运行并返回我的 _batchNumber。所以它返回一个空的_batchNumber。有没有办法阻止它运行到返回(在我的 .finally 之外)并等待 _batchNumber 从我的 .finally 中填充。
我的代码现在显然不起作用,因为我的 .finally 不允许在其中返回。
【问题讨论】:
-
你能描述一下你真正想在这里做什么吗?也许你想要 Aggregate 而不是 finally?
-
_batchNumber 是在方法的早期设置的。这段代码一直运行到返回 _batchNumber,然后我在最后设置它。我想要的是在方法底部的 return _batchNumber 之前停止执行。我不确定聚合到底会做什么。
-
我的意思是,描述这段代码的目标——场景是什么?
-
我基本上得到了一个从各种变量创建的batchNumber——用户名、日期和其他一些硬编码项目。我的批号看起来像这个 RCV-evjen-072711 在我有了这个批号之后我会做什么是查询那个号码上的数据库 - 然后在我的数据库中使用startsWith-,那个batchNumber以-1或-2等结尾......我然后将增加最后一个数字。所以我最终可能会得到一批 RCV-gevjen-072711-2。这将是我需要返回的最终批号。希望这是有道理的。
-
记录
_context.QuerySingleOrDefault和_context.GetRedemptionsQuery的返回类型对您很有用
标签: c# silverlight asynchronous system.reactive