如何将一组值分配给字符串或 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# 的新手,所以不太了解它。我希望有人理解我的问题并能帮助我。
定义一个包含定价信息的单独 class。
例如:
public class PriceInfo
{
public string Name {get; set;}
public string RawPrice {get; set;}
public int Price => int.Parse(RawPrice.Trim('$'));
}
将词典定义为 class 成员。 Dictionary.
Dictionary<string, PriceInfo> priceData = new Dictionary<string, PriceInfo>();
在您的循环中,将价格添加到字典中。
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
};
}
使用值:
priceData["somename"].Price
我对 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# 的新手,所以不太了解它。我希望有人理解我的问题并能帮助我。
定义一个包含定价信息的单独 class。 例如:
public class PriceInfo { public string Name {get; set;} public string RawPrice {get; set;} public int Price => int.Parse(RawPrice.Trim('$')); }
将词典定义为 class 成员。 Dictionary.
Dictionary<string, PriceInfo> priceData = new Dictionary<string, PriceInfo>();
在您的循环中,将价格添加到字典中。
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 }; }
使用值:
priceData["somename"].Price