我在一个更大的foreach循环中有几个foreach循环。我想要做的是将每组传递添加到datalist / datasource。
foreach (HtmlNode cell in cells3)
{
Dispatcher.BeginInvoke(() => textBlock4.Text = cell.InnerText);
}
foreach (HtmlNode cell in cells)
{
Dispatcher.BeginInvoke(() => textBlock5.Text = cell.InnerText);
}
foreach (HtmlNode cell in cells2)
{
Dispatcher.BeginInvoke(() => textBlock6.Text = cell.InnerText);
}
我当前的代码经过并将结果转储到文本块,但它相互过度权限,所以它只显示最后的结果。所以我需要将它们添加到变量或数据列表中,以便在列表中单独显示它们。
提前致谢!
答案 0 :(得分:2)
而不是像这样覆盖文本:
textBlock4.Text = cell.InnerText
你可以追加,就像这样:
textBlock4.Text += cell.InnerText
更好(并且更快,因为它不会使用缓慢的DependencyProperty系统过度以及减轻调度程序)方法将聚合StringBuilder
中的文本并在之后分配它,如下所示:< / p>
StringBuilder sb = new StringBuilder();
foreach (HtmlNode cell in cells3)
{
sb.AppendLine(cell.InnerText);
}
Dispatcher.BeginInvoke(() => textBlock4.Text = sb.ToString());
sb.Clear();
// reuse sb for the following loops as shown above
你也可以使用LINQ,这会使整个事情变得更短:
StringBuilder sb = cells3.Aggregate(
new StringBuilder(),
(sb, cell) => sb.AppendLine(cell.InnerText));
Dispatcher.BeginInvoke(() => textBlock4.Text = sb.ToString());