3

假设你有这个:

class A
{
    public string name;
}

然后你有一个List<A>并且想要打印name每个对象的。
通常,如果您只想打印项目,您会执行类似的操作

String.Join(", ", myList);

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

4

2 回答 2

13

采用

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

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

编辑:

如果您想在他的代码之后寻求亚当的答案,请执行此操作

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

礼貌 Adam Goss 对答案的评论:

您不需要调用.Select(x => x.ToString()),因为它会在内部被 object inside 调用String.Join(),所以如果您覆盖ToString(),您只需调用String.Join(", ", myList);

所以在他的代码做你所想的之后

String.Join(", ", myList);
于 2012-08-14T11:47:48.820 回答
2

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

public override String ToString()
{
    return name;
}

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

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

ETC...

于 2012-08-14T11:49:47.403 回答