如何在 LINQ 中不带大括号地强制转换值

  • 本文关键字:转换 LINQ 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();

您的select是创建具有单个属性的匿名类型:Price。如果您想要的只是实际价格(并作为浮动),请将您的选择更改为

// select new { Price = (Int32)f.Element("price") }
select (float)(int)f.Element("price")

但是,不建议您使用float来处理价格等财务问题decimal数据类型是此类值的首选类型。

select (decimal)f.Element("price")

当你这样做时会发生什么:

lblPrice.Text = flightPrice.Price.ToString();

您也可以这样做:

// omited the first 3 lines of your linq statement...
 select (Int32)f.Element("price")
 ).SingleOrDefault();

在这种情况下,flightPrice 将是 类型 int .

要么放select (Int32)f.Element("price")而不是select new { Price = (Int32)f.Element("price") }

lblPrice.Text = flightPrice.Price.ToString();

相关内容

  • 没有找到相关文章

最新更新