如何将一组值分配给字符串或 Int 值?

How can I assign a set of values to a string or Int value?

我对 C# 有疑问。 我设法从网页中解析出 material 的价格(带有 material 和价格的列表),但我不知道如何将单个值提取到单个字符串或整数。我已将 "price" 分配给一个字符串,但该字符串包含一个值数组。

这是 C# 代码:

var products = htmlDocument.DocumentNode.Descendants("div")
                .Where(node => node.GetAttributeValue("id", "")
                .Equals("accordion1")).ToList();

            var productListItems = products[0].Descendants("tr")
                .Where(node => node.GetAttributeValue("data-name", "")
                .Contains("")).ToList();

            foreach (var productListItem in productListItems)
            {
                Console.WriteLine(productListItem.GetAttributeValue("data-name", ""));
                var tds = productListItem.Descendants("td").ToList();

                var name = tds[0].InnerText;
                var price = tds[1].InnerText.Trim('$');

                Console.WriteLine(name);
                Console.WriteLine(price);
            }

控制台:

clay_r
Lehm
199

coal_r
Kohle
427

copper_r
Kupfer
312

etc.

现在我想要,我可以用单个字符串调用单个 material(如粘土)。这样我就有了每个 materialPrice 一个整数。

类似于:

int clayPrice = int.Parse(the first price)
int coalPrice = int.Parse(the second price)
int copperPrice = int.Parse(the third price)

等等

我是 C# 的新手,所以不太了解它。我希望有人理解我的问题并能帮助我。

  1. 定义一个包含定价信息的单独 class。 例如:

    public class PriceInfo
    {
       public string Name {get; set;}
       public string RawPrice {get; set;}
       public int Price => int.Parse(RawPrice.Trim('$'));
    }
    
  2. 将词典定义为 class 成员。 Dictionary.

    Dictionary<string, PriceInfo> priceData = new Dictionary<string, PriceInfo>();
    
  3. 在您的循环中,将价格添加到字典中。

    foreach (var productListItem in productListItems)
    {
        Console.WriteLine(productListItem.GetAttributeValue("data-name", ""));
        var tds = productListItem.Descendants("td").ToList();
    
        var name = tds[0].InnerText;
        var price = tds[1].InnerText;
    
        // add to Dictionary
        priceData[name] = new PriceInfo
        {
          Name = name,
          RawPrice = price
        };
    }
    
  4. 使用值:

    priceData["somename"].Price