Cast to decimal
instead of using Convert.ToDecimal
within Select
method:
var resultSet = (xmlDoc.Root.Descendants(ns + "Row").Select(result => new
{
MonthYearShortName = (DateTime)result.Element(ns + "Column0"),
Product = (String)result.Element(ns + "Column1"),
Actual = (decimal)result.Element(ns + "Column2"),
Forecast = (decimal)result.Element(ns + "Column3"),
Target = result.Elements(ns + "Column4").Select(s => (decimal)s).ToArray()
}));
But, this makes sense only when you expect more than one Column4
element to exist. Otherwise, you can just do following:
Target = (decimal)result.Element(ns + "Column4")
or to get decimal[]
with just one value:
Target = new [] { (decimal)result.Element(ns + "Column4") }