我正在使用 LINQ 和 HtmlAgilitypack 从 HTML 创建数据表。以下获取 html 表头并构造数据表列:
var nodes = htmlDoc.DocumentNode.SelectNodes("//table[@class='ps-sellers-table crts']/tr");
nodes[0].Elements("th")
.Skip(0)
.Select(th => th.InnerText
.Trim())
.ToList()
.ForEach(header => dt.Columns.Add(header));
到目前为止,它工作得很好,除了我需要一些定制。
- 选择要添加的列。
- 并指定列类型。
此 select 语句将执行上述两件事:
switch (header)
{
case ("id") : dt.Columns.Add(header,typeof(int)); break;
case ("name") : dt.Columns.Add(header,typeof(string)); break;
case ("price") : dt.Columns.Add(header,typeof(decimal)); break;
case ("shipping") : dt.Columns.Add(header,typeof(decimal)); break;
default : //skip the column and dont add it
}
但是我对 LINQ 和 C# 真的很陌生,我想在第一个片段的 foreach 中实现上面的 switch case,我知道我应该使用ternary operator
,但我不确定语法。