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()
方法用于创建实体的自定义字符串。