Argument1:无法从List中的'string'转换为'int'错误

时间:2014-02-18 20:47:05

标签: c# xml asp.net-mvc

我有以下代码

public static List<int> GetAllYear()
{
    XmlDocument document = new XmlDocument();
    document.Load(strXmlPath);
    XmlNodeList nodeList = document.SelectNodes("Year");
    List<int> list = new List<int>();
    foreach (XmlNode node in nodeList)
    {
        list.Add(node.Attributes["name"].Value.ToString()); //This line throws error
    }
    return list;
}

当我尝试构建解决方案时,我收到以下错误:

Argument1: cannot convert from 'string' to 'int'

老实说我不知道​​为什么,因为当我将结果返回给list变量时,我使用ToString()来显式转换它。有人可以帮我理解这里发生了什么。如果需要,我可以发布更多代码。

我试图只是谷歌的错误消息,它似乎是一般的错误消息,但没有人真正解释错误的原因。

提前谢谢

4 个答案:

答案 0 :(得分:9)

您的列表为List<int>,并且您正在尝试向List添加字符串值,但您不能这样做。

您可以使用intint.Parse或使用Convert.ToInt32

安全地将字符串解析为int.TryParse

如果您的Value包含整数值,那么您可以明确地将其转换为:

list.Add((int) node.Attributes["name"].Value);

或者您可以使用:

list.Add(Convert.ToInt32(node.Attributes["name"].Value));

答案 1 :(得分:3)

您正在尝试将字符串添加到只能包含int的

的列表中

你需要将字符串解析成一个int,就像这样......

list.Add(int.Parse(node.Attributes["name"].Value));

答案 2 :(得分:1)

您的列表属于int类型,因此您应该将要添加的值转换为int

list.Add(int.Parse(node.Attributes["name"].Value));

答案 3 :(得分:1)

您正尝试将string值添加到类型int的列表中。在添加到列表之前,您必须将字符串值(如果可能)转换为int。我建议您这样(using Int32.TryParse)以避免意外异常,以防您发现无法转换为int的字符串。

int number;
bool result = Int32.TryParse(node.Attributes["name"].Value, out number);
if (result) list.Add(number);