我在一个类中有一个方法定义为......
public static async Task<int> GetDCountAsync(int dId)
我正在尝试在 LINQ Where 子句中调用此方法...
var excessD= dToConsider
.Where(async x => await myService.GetDCountAsync(x.Id) >= x.Threshold)
.Select(x => x.Id)
.ToArray();
仅供参考:阈值是一个整数。
我收到异步错误......
“async”匿名函数的返回类型必须是“void”、“Task”、“Task”……
GetDCountAsync的返回类型是async Task。我哪里错了?提前致谢!
您可以使用中已有的功能系统.Linq.Async包裹:
int[] excessD = await dToConsider
.ToAsyncEnumerable()
.WhereAwait(async x => await myService.GetDCountAsync(x.Id) >= x.Threshold)
.Select(x => x.Id)
.ToArrayAsync();
的签名WhereAwait
操作员:
// Filters the elements of an async-enumerable sequence based on
// an asynchronous predicate.
public static IAsyncEnumerable<TSource> WhereAwait<TSource>(
this IAsyncEnumerable<TSource> source,
Func<TSource, ValueTask<bool>> predicate);
异步方法myService.GetDCountAsync
将被调用并且await
一次只针对一个元素进行编辑,而不是同时针对所有元素进行编辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)