LINQ删除大括号,施法值

时间:2011-05-14 23:31:16

标签: linq

当我输出此代码时,当我只想要没有括号的数字时,我得到{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();

3 个答案:

答案 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();