WP7 foreach循环到一个datalist

时间:2012-02-03 22:03:24

标签: c# silverlight windows-phone-7 datalist

我在一个更大的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);
}

我当前的代码经过并将结果转储到文本块,但它相互过度权限,所以它只显示最后的结果。所以我需要将它们添加到变量或数据列表中,以便在列表中单独显示它们。

提前致谢!

1 个答案:

答案 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());