为什么我得到System.Data.DataRow?而不是数据表(我已经从 Outlook 中检索了一个表 作为 html 正文,然后我将其解析为数据表)



我从outlook中检索了一个表作为html体然后我将其解析为数据表但当我运行代码时,所有我得到的是System.Data.DataRow

static void Main(string[] args)
{
var mails = OutlookEmails.ReadMailItems();
foreach (var mail in mails)
{
StringBuilder builder = new StringBuilder();
builder.Append(mail.EmailBody.ToString());
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(builder.ToString());
var nodes = doc.DocumentNode.SelectNodes("//table//tr");
DataTable dataTable = new DataTable();
var headers = nodes[0]
.Elements("th")
.Select(th => th.InnerText.Trim());
foreach (var header in headers)
{
dataTable.Columns.Add(header);
}
var rows = nodes.Skip(1).Select(tr => tr
.Elements("td")
.Select(td => td.InnerText.Trim())
.ToArray());
foreach (var row in rows)
{
dataTable.Rows.Add(row);
}

Console.WriteLine(dataTable.Rows);
Console.ReadLine();
}
}

因为你只是打印出对象的类型。

你还期望什么?

如果你想打印出dataTable中每一行的每一列,你必须指定它。

试试这个:

foreach (DataRow row in dataTable.Rows) 
{
Console.WriteLine();
foreach (DataColumn col in dataTable.Columns) 
{
Console.Write(row[col] + " ");
}
}

更多信息:MS DataTable Docs

相关内容

  • 没有找到相关文章

最新更新