将字符串数组转换为其他类型

时间:2014-02-24 00:15:13

标签: c#

我正在尝试转换由逗号分隔的字符串,其中包含7个值:

2014-21-2,1207.81,1209.87,1202.84,1203.79,1862300,1203.79

到另一个模型:

return lines[1].Split(',').Select(i => new StockModel
{
    StockDate = DateTime.ParseExact(i.ToString(), "yyyy-MM-dd", null),
    StockOpen = float.Parse(i.ToString()),
    StockHigh = float.Parse(i.ToString()),
    StockLow = float.Parse(i.ToString()),
    StockClose = float.Parse(i.ToString()),
    StockVolume = Convert.ToInt32(i.ToString()),
    StockAdjustedClose = float.Parse(i.ToString()),
    StockSymbol = stockSymbol

}).SingleOrDefault();

但是我收到的错误包括:Additional information: Input string was not in a correct format. http://s17.postimg.org/ro4k3tzct/Screenshot_1.png

如果我手动执行此操作:DateTime date = DateTime.Parse(lines[1].Split(',')[0]),则可以正常使用。

无论我想在新模型中添加什么价值,我都会遇到这样的错误。

1 个答案:

答案 0 :(得分:2)

好的,我看到了问题。你不应该在这里使用Select。请尝试以下方式:

var i = lines[1].Split(',');

return new StockModel()
{
    StockDate = DateTime.ParseExact(i[0].ToString(), "yyyy-MM-dd", null),
    StockOpen = float.Parse(i[1].ToString()),
    StockHigh = float.Parse(i[2].ToString()),
    StockLow = float.Parse(i[3].ToString()),
    StockClose = float.Parse(i[4].ToString()),
    StockVolume = Convert.ToInt32(i[5].ToString()),
    StockAdjustedClose = float.Parse(i[6].ToString()),
    StockSymbol = stockSymbol
};