考虑以下C#行:
var item = listOfItems.FirstOrDefault(i => GetResult(i) <= upperLimit);
我的问题是,有没有办法从该行中获取GetResult(i)
的返回值?
显而易见的答案有两行:
var item = listOfItems.FirstOrDefault(i => GetResult(i) <= upperLimit);
var result = GetResult(item);
但是两次调用相同的函数似乎有点低效......只有一次调用result
是一种方式吗?
答案 0 :(得分:2)
您可以使用此功能(假设20160109 - 09/01/2016
20160108 - 08/01/2016
20160107 - 07/01/2016
20160106 - 06/01/2016
20160105 - 05/01/2016
20160104 - 04/01/2016
20150103 - 03/01/2015 <-- Should be 2016
20150102 - 02/01/2015
20150101 - 01/01/2015
20151231 - 31/12/2015
20151230 - 30/12/2015
20151229 - 29/12/2015
...
20150103 - 03/01/2015
20150102 - 02/01/2015
20150101 - 01/01/2015
20151231 - 31/12/2015
20151230 - 30/12/2015
20151229 - 29/12/2015
20141228 - 28/12/2014 <-- Should be 2015
20141227 - 27/12/2014
20141226 - 26/12/2014
返回GetResult
):
int
此解决方案将保留int? result = null;
var item = listOfItems.FirstOrDefault(x => (result = GetResult(x)) <= upperLimit);
的 lazyness :它将在找到的第一个匹配时停止。
答案 1 :(得分:2)
你可以在匿名类型的项目上选择项目和调用.service('refreshTokenService', ['$http', function ($http) {
this.refreshTokenService = function () {
$http.post('/refresh').then(
function success(response) {
.....
},
function error(data) {
.....
}
);
};
的结果,以便像这样得到它们:
GetResult