从lambda表达式中的函数调用中获取返回值

时间:2016-06-29 14:15:53

标签: c# linq

考虑以下C#行:

var item = listOfItems.FirstOrDefault(i => GetResult(i) <= upperLimit);

我的问题是,有没有办法从该行中获取GetResult(i)的返回值?

显而易见的答案有两行:

var item = listOfItems.FirstOrDefault(i => GetResult(i) <= upperLimit);
var result = GetResult(item);

但是两次调用相同的函数似乎有点低效......只有一次调用result是一种方式吗?

2 个答案:

答案 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