当我输出此代码时,当我只想要没有括号的数字时,我得到{Price:1446}。有没有办法做到这一点?此外,一旦我得到价格值,我想将其转换为十进制。有没有办法做到这一点?
var flightPrice = (from f in XElement.Load(MapPath("flightdata.xml")).Elements("flight")
where (string)f.Element("flightnumber") == FlightNumber
&& (string)f.Element("destinationairportsymbol") == Destination
select new { Price = (Int32)f.Element("price") }
).SingleOrDefault();
lblPrice.Text = flightPrice.ToString();
答案 0 :(得分:1)
您的select
正在创建一个包含单个属性的匿名类型:价格。如果您想要的只是实际价格(以及作为浮点数),请将您的选择更改为
// select new { Price = (Int32)f.Element("price") }
select (float)(int)f.Element("price")
但是,建议您不要使用float
来处理财务状况,例如价格。 decimal
数据类型是此类值的首选类型
select (decimal)f.Element("price")
答案 1 :(得分:0)
当你这样做时会发生什么:
lblPrice.Text = flightPrice.Price.ToString();
你也可以这样做:
// omited the first 3 lines of your linq statement...
select (Int32)f.Element("price")
).SingleOrDefault();
在这种情况下,flightPrice
的类型为int
。
答案 2 :(得分:0)
要么select (Int32)f.Element("price")
而不是select new { Price = (Int32)f.Element("price") }
或
lblPrice.Text = flightPrice.Price.ToString();