2012-02-03 2 views
0

У меня есть несколько циклов foreach друг за другом в более крупном цикле foreach. То, что я хочу сделать, это добавить каждый набор проходов в источник данных datasource/datasource.WP7 foreach loop to datalist

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); 
} 

Мой текущий код проходит и выгружает результаты для текстовых блоков, но это более-прав друг друга, так что отображается только последний результат. Поэтому мне нужно добавить их в переменные или каталоги для отображения их отдельно в списке.

Заранее благодарен!

ответ

2

Вместо того, чтобы перезаписывать текст, как это:

textBlock4.Text = cell.InnerText 

вы можете добавить его, как это:

textBlock4.Text += cell.InnerText 

Лучше (и быстрее, так как он не использует медленный Система DependencyProperty как чрезмерная, так и облегчает диспетчер) подход будет сводить текст в StringBuilder и назначать его потом, например:

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()); 
+0

Благодарности @Tobias, прилагаемой бит был много помощи, но я все еще не уверены в том, как их все отображения в формате списка, например, у меня есть результаты в списке, но изначально он перечитывает результаты, но теперь он добавляется в прямую строку текста. Мне нужно разрезать его на разделы, отображаемые под друг другом. –

+0

Для этого вы могли бы, например, добавить в строку строку «Environment.NewLine» (или, если вы используете «StringBuilder», снова вызовите «AppendLine») ... – Nuffin