使用C#将List转换为数组

时间:2013-08-17 18:05:55

标签: c#

我正在尝试转换我从API中提取的列表并将其转换为列表。该列表确实返回其他数据,但我在那里有代码只返回我想要的数据(可能是错误的)

//this pulls the data
public List<AccountBalance> CorpAccounts(int CORP_KEY, string CORP_API, int USER)
{
    List<AccountBalance> _CAccount = new List<AccountBalance>();
    EveApi api = new EveApi(CORP_KEY, CORP_API, USER);
    List<AccountBalance> caccount = api.GetCorporationAccountBalance();
    foreach (var line in caccount)
    {

        //everyting after
        string apiString = line.ToString();
        string[] tokens = apiString.Split(' ');
        _CAccount.Add(line);
    }
    return _CAccount;
}


//I am trying to convert the list to the array here
private void docorpaccounts()
{
    string[] corpbal = cwaa.CorpAccounts(CORP_KEY, CORP_API, USER).ToArray();
}

使用该代码我收到此错误:

  

错误1无法隐式转换类型'EveAI.Live.AccountBalance []'   'string []'

不确定我在这里做错了什么。

2 个答案:

答案 0 :(得分:4)

您尝试将AccountBalance[]分配到string[] - 正如错误所示。

除非您确实需要string[],否则您应该将变量声明更改为AccountBalance[]

private void docorpaccounts()
{
    AccountBalance[] corpbal = cwaa.CorpAccounts(CORP_KEY, CORP_API, USER).ToArray();
}

或指定AccountBalance应如何转换为string。例如使用ToString方法:

private void docorpaccounts()
{
    string[] corpbal = cwaa.CorpAccounts(CORP_KEY, CORP_API, USER)
                           .Select(x => x.ToString())
                           .ToArray();
}

或其中一个属性

private void docorpaccounts()
{
    string[] corpbal = cwaa.CorpAccounts(CORP_KEY, CORP_API, USER)
                           .Select(x => x.MyStringProperty)
                           .ToArray();
}

答案 1 :(得分:1)

List<T>.ToArray方法msdn

语法:

  

public T [] ToArray()

因此,如果您有List<AccountBalance>,则在调用AccountBalance[]方法时应该ToArray

试试这个:

AccountBalance[] corpbal = cwaa.CorpAccounts(CORP_KEY, CORP_API, USER).ToArray();

正如@BenjaminGruenbaum在评论中提到的,更好的选择是使用var关键字(msdn):

var corpbal = cwaa.CorpAccounts(CORP_KEY, CORP_API, USER).ToArray();