C# 什么';打印对象列表中所有属性的最佳方法是什么?

C# 什么';打印对象列表中所有属性的最佳方法是什么?,c#,.net,linq,C#,.net,Linq,假设你有这个: class A { public string name; } 然后你有一个列表,想要打印每个对象的名称。 通常,如果您只想打印项目,您可以执行以下操作 String.Join(", ", myList); 但是我需要打印name属性,而不是myList对象名称。有没有比foreach更简单的方法?使用 String.Join(", ", myList.Select(x => x.name)); 为此,您必须包括System.Linq名称空间 编辑: 如果你想

假设你有这个:

class A
{
    public string name;
}
然后你有一个
列表
,想要打印每个对象的
名称

通常,如果您只想打印项目,您可以执行以下操作

String.Join(", ", myList);
但是我需要打印
name
属性,而不是
myList
对象名称。有没有比foreach更简单的方法?

使用

String.Join(", ", myList.Select(x => x.name));
为此,您必须包括
System.Linq
名称空间

编辑:

如果你想在亚当的密码后得到他的答案,那么做什么

String.Join(", ", myList.Select(x => x.ToString()));
亚当·戈斯对答案的评论:

您不需要调用
。选择(x=>x.ToString())
,因为它将由
String.Join()
中的对象在内部调用,所以如果重写
ToString()
,您只需调用
String.Join(“,”,myList)

所以在他的密码之后,做你想做的

String.Join(", ", myList);

如果您只需要name属性,那么最好的方法就是重写类A上的ToString()方法

public override String ToString()
{
    return name;
}
如果有更多属性,请调整ToString()以匹配:

public override String ToString()
{
    return String.Format("Name: {0}. Prop1: {1}", name, prop1);
}

等等。

这是一个非常简单的解决方案,+1。但是,如果你的类有更多的属性,我认为重写
ToString
是一个更好的主意。第一个不是比重写泛型函数更干净吗?@argoneus如果你只有一个属性,它就更干净了(请阅读我的第一条评论)。但是,如果您的类有2个或更多属性(这是一种常见的情况),则重写
ToString
更好。您不需要调用Select(x=>x.ToString()),因为它将由String.Join()中的对象在内部调用,所以如果重写ToString(),则只需调用String.Join(“,”,myList)@argoneus:In.Net
.ToString()
方法用于创建实体的自定义字符串。