需要帮助以在文本框中显示列表的内容

时间:2019-06-13 23:12:19

标签: c# list

我正在尝试在Windows窗体应用程序文本框中显示10个人的名字。代码的最后一行给我以下两个错误:

  

“ 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 个答案:

答案 0 :(得分:1)

String.Join需要一个字符串列表。您现在正在提供全名列表。

您可以尝试:

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

如果您想同时使用姓名和姓氏,则只需将其附加:

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

答案 1 :(得分:1)

使用替代功能使字符串美化

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()方法之后,您只需调用class即可打印它。

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

答案 2 :(得分:0)

您正在将通用列表作为 String.Join()的第二个参数传递,同时它接受字符串数组。

所以不是

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

您可以使用简单的LINQ扩展方法来更正此问题。

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

,其余的一切都会好起来的。