【发布时间】:2025-12-07 06:40:01
【问题描述】:
因此,存储 Price 属性应该是小数,因为当涉及到货币时,最好使用小数 (iirc)
我的示例在这里做了什么,它下载了一个看起来像这样的字符串$12.99
我可以轻松地删除该字符串的第一个索引,并将其余的索引解析为双精度,但在这里使用此示例会让人感觉它的代码有异味。
internal class Program
{
private static readonly List<Product> Products = new List<Product>();
private static void Main(string[] args)
{
var web = new HtmlWeb();
var doc = web.Load("https://www.petco.com/shop/en/petcostore/category/cat/cat-food/natural-cat-food");
var titles = doc.DocumentNode.SelectNodes("//*[@class = 'product-name']/a[@title]");
var prices = doc.DocumentNode.SelectNodes("//*[@class = 'product-price-promo']");
foreach (var product in titles.Zip(prices,
(t, p) => new Product {Name = t.InnerText.Trim(), Price = p.InnerText.Trim()}))
Products.Add(product);
Console.ReadLine();
}
}
产品模型很简单,只有一个名称和一个价格属性(我想使用十进制而不是字符串来表示价格,这有点像这里的目标)
internal class Product
{
public string Name { get; set; }
public string Price { get; set; }
}
我的问题是,当做这样的事情时,将p.InnerText.Trim() 转换为小数的正确方法是什么
【问题讨论】:
标签: c# .net type-conversion