Отображение элементов в списке массивов с окном сообщений - PullRequest
2 голосов
/ 24 мая 2011

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

ps отображение первого поля элемента также нормально

пример кода (метод, который я создал для извлечения данных из API:

void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                Stream responseStream = e.Result;
                StreamReader responseReader = new StreamReader(responseStream);
                string response = responseReader.ReadToEnd();

                string[] split1 = Regex.Split(response, "},{");
                List<string> pri1 = new List<string>(split1);
                pri1.RemoveAt(0);
                string last = pri1[pri1.Count() - 1];
                pri1.Remove(last);

                str = pri1;
            }
        }

Ответы [ 4 ]

2 голосов
/ 24 мая 2011

Для отображения значений через запятую:

var list = new List<string> { "tes1", "test2", "test3" };

var message = string.Join(",", list);
MessageBox.Show(message);

[Update]

Несколько улучшений, которые вы можете сделать в своем коде:

private void button1_Click(object sender, RoutedEventArgs e)
{
    var response = "asdf},{asaaa},{shf";
    var split = Regex.Split(response, "},{");

    var elements = split
        .Skip(1)
        .Take(split.Length - 2)
        .ToList();

    var message = string.Join(",", elements);
    MessageBox.Show(message);
}
1 голос
/ 24 мая 2011

Я обычно делаю что-то вроде этого:

    public void PrintList(IList<object> list)
    {
        string printString = "List Elements";

        foreach (object o in list)
        {
            // Add the fields you want to show here
            printString += "\n" + o.ToString();
        }

        MessageBox.Show(printString);
    }

Для вашей реализации замените object вашим классом, в котором хранится информация, полученная вами от API, и добавьте поля, которые вы хотите видеть, в строку printString += ....

1 голос
/ 24 мая 2011

MessageBox.Show (String.Join ("", str), но действительно ли вы уверены, что хотите этого? Я имею в виду, не будет ли более привлекательным представить этот список внутри ItemsControl, показанного внутри Silverlight ChildWindow?

<ChildWindow>
 <ItemsControl ItemsSource="{Binding str}">
   <ItemsControl.ItemTemplate>
     <DataTemplate>
       <TextBlock Text="{Binding}"/>
     </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl
</ChildWindow>
0 голосов
/ 24 мая 2011

Linq добавляет гибкости к желаемому формату:

var list = new List<string>{"one","two", "three"};

var consolidatedList = list.Aggregate((s1,s2) => String.Format("{0} {1}",s1,s2));
//consolidatedList = "one two three"

MessageBox.Show(consolidatedList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...