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

时间:2012-08-14 11:46:53

标签: c# .net linq

说你有这个:

class A
{
    public string name;
}

然后你有一个List<A>,想要打印每个对象的name 通常情况下,如果您只想打印项目,则需要执行类似

的操作
String.Join(", ", myList);

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

2 个答案:

答案 0 :(得分:11)

使用

String.Join(", ", myList.Select(x => x.name));

为此,您必须包含System.Linq命名空间

修改

如果你想在他的代码做了这个

之后去寻找Adam的答案
String.Join(", ", myList.Select(x => x.ToString()));

礼貌Adam Goss评论答案:

您无需拨打.Select(x => x.ToString()),因为String.Join()内的对象会在内部调用,因此如果您覆盖ToString(),则只需拨打String.Join(", ", myList);

所以在他的代码完成你所想的之后

String.Join(", ", myList);

答案 1 :(得分:2)

如果你只想要name属性,那么最好的方法是覆盖A类的ToString()方法。

public override String ToString()
{
    return name;
}

如果您有更多属性,请调整ToString()以匹配:

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

等...