You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#异步迭代器报错CS0029:无法返回值的问题咨询

问题解决:CS0029 无法将List隐式转换为AWSLambda

错误原因

你的ListOfLambdas方法声明返回IAsyncEnumerable<AWSLambda>,要求每次yield return输出单个AWSLambda实例,但你直接返回了整个List<AWSLambda>集合,类型不匹配导致编译器报错。

解决方案

以下两种实现方式都能满足你获取可迭代列表的需求:

方式1:直接逐个返回转换后的元素(推荐)

无需先将所有元素存入List,直接遍历response.Functions,转换后逐个yield return,避免额外的List内存开销:

public void FunctionHandler()
{
    IAsyncEnumerable<AWSLambda> returnedListOfLambdas = ListOfLambdas();
}

private async IAsyncEnumerable<AWSLambda> ListOfLambdas()
{
    var lambdaClient = new AmazonLambdaClient();
    var response = await lambdaClient.ListFunctionsAsync();
    
    foreach (var function in response.Functions)
    {
        yield return MapLambda(function);
    }
}

private static AWSLambda MapLambda(FunctionConfiguration function)
{
    return new AWSLambda
    {
        FunctionName = function.FunctionName.ToString(),
        FunctionARN = function.FunctionArn.ToString(),
        FunctionDescription = function.FunctionName.ToString(),
        FunctionRunTime = function.Runtime.ToString(),
        FunctionMemorySize = function.MemorySize.ToString(),
        FunctionTimeout = function.Timeout.ToString(),
        FunctionHandler = function.Handler.ToString()
    };
}

方式2:先收集到List再逐个返回

如果业务需要先将元素存入List再返回,遍历List逐个输出即可:

private async IAsyncEnumerable<AWSLambda> ListOfLambdas()
{
    var lambdaClient = new AmazonLambdaClient();
    var list = new List<AWSLambda>();
    var response = await lambdaClient.ListFunctionsAsync();
    
    foreach (var function in response.Functions)
    {
        list.Add(MapLambda(function));
    }

    foreach (var lambda in list)
    {
        yield return lambda;
    }
}

补充说明

使用IAsyncEnumerable时,消费它需要用await foreach循环,需将FunctionHandler改为异步方法:

public async Task FunctionHandler()
{
    await foreach (var lambda in ListOfLambdas())
    {
        // 处理每个lambda实例
    }
}

内容的提问来源于stack exchange,提问作者Stephen Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:57:38