Нужна помощь, чтобы отобразить содержимое списка в текстовом поле - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь отобразить имена 10 человек в текстовом поле приложения Windows Form. Последняя строка кода дает мне следующие 2 ошибки:

Наилучшее перегруженное соответствие метода для 'string.Join (string, string [])' имеет недопустимые аргументы.

Аргумент 2: невозможно преобразовать из 'System.Collections.Generic.List' в 'string []'.

Может кто-нибудь объяснить ошибки и как их исправить?

public class FullName
{
    public string name;
    public string surname;
}

int i;
List<FullName> namesList = new List<FullName>();

for (i = 0; i < 10; i++)
{
    namesList.Add(new FullName { name = "John", surname = "Adams" });
}

txt_names.Text = String.Join(" ", namesList);

Ответы [ 3 ]

1 голос
/ 14 июня 2019

Используйте переопределение, чтобы сделать строку beautify

public class FullName
{
    public String Name { get; set; }
    public String SurName { get; set; }

    public override string ToString()
    {
        return String.Format("{0} {1}", Name, SurName);
    }
}

. После переопределения метода ToString () вы можете просто вызвать класс для его печати. ​​

List<FullName> Names = new List<FullName>();
for ( int i = 0; i < 10; i++ )
{
     Names.Add(new FullName() { Name = "John", SurName = "Smith" });
}
Console.WriteLine(String.Join("\r\n", Names));

Результат>

John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
1 голос
/ 14 июня 2019

String.Join ожидает список строк для присоединения. Вы даете список FullName прямо сейчас.

Вы можете попробовать:

String.Join(",", namesList.Select(m => m.name).ToArray());

А если вам нужны имя и фамилия, вы можете просто добавить их:

String.Join(",", namesList.Select(m => m.name + m.surname).ToArray());
0 голосов
/ 14 июня 2019

Вы передаете Общий список в качестве второго аргумента String.Join () , в то время как он принимает массив строк.

Так вместо

txt_names.Text = String.Join(" ", namesList);

Вы можете исправить это, используя простой метод расширения LINQ.

txt_names.Text = String.Join(" ", namesList.Select(x=> $"{x.Name} {x.SurName}");

и все будет хорошо.

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