将API响应对象转换为List <t>

时间:2019-01-28 17:35:08

标签: c# asp.net-core-2.0

我正在尝试从第三方API获得响应并将其转换为列表。

我在下面将结果分配给“ returnValue”的行上收到此错误。

我确保包括“ using System.Linq;”指令。

这是错误:

  

'ListCharacterResponse'不包含'ToList'的定义

public List<T> RetrieveCharacterListFromApi<T>(Guid gameId)
{
    List<T> returnValue = default(List<T>);
    var getCharacterResponse = GetCharacters(gameId);
    var results = getCharacterResponse.Result;
    // 'ListCharacterResponse' does not contain a definition for 'ToList'.
    returnValue = results.ToList<T>();

    return returnValue;
}

在这里,我连接到第三方API,并返回一个 ListCharacterResponse 对象:

public async Task<ListCharacterResponse> GetCharacters(Guid gameId)
{
    ListCharacterResponse response;
    response = await charMgr.GetCharactersListAsync(gameId);
    return response;
}

我在.net控制器中像这样使用RetrieveCharacterListFromApi:

Guid gameId;
var characters = new List<Character>();
characters = API.RetrieveCharacterListFromApi<Character>(gameId);

还有另一种方法可以将其转换为列表吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果API调用的结果为Character格式,那么您基本上就在那儿。除了.ToList<T>(),您可以:

public List<T> RetrieveCharacterListFromApi<T>(Guid gameId)
{
    // List<T> returnValue = default(List<T>);
    var getCharacterResponse = GetCharacters(gameId);
    var results = getCharacterResponse.Result;
    // 'ListCharacterResponse' does not contain a definition for 'ToList'.
    List<T> returnValue = new List<T>(results);

    return returnValue;
}

或者,如果您需要迭代:

public List<T> RetrieveCharacterListFromApi<T>(Guid gameId)
{
    List<T> returnValue = default(List<T>);
    var getCharacterResponse = GetCharacters(gameId);
    var results = getCharacterResponse.Result;
    // 'ListCharacterResponse' does not contain a definition for 'ToList'.
    foreach(Character character in results)
        returnValue.Add(character);

    return returnValue;
}