从通用列表中获取属性名称

3

环境:asp.net fx3.5

给定:

public class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public decimal UnitPrice { get; set; }
}

我有一个List<Product>集合。

有没有办法获取属性名称,因为我希望它们成为我构建的csv文件的标题行?

所以我要的结果是一个string = "ProductId,ProductName,UnitPrice"


我喜欢下面的解决方案,但是我没有理解关于使用字符串构建器可能会影响性能的评论。所以我进行了一些搜索并找到了以下内容,并加以实现:http://www.csharp411.com/c-convert-string-to-stream-and-stream-to-string/。这就是评论所指的吗? - Rod
3个回答

4
var headers = this.GetType().GetProperties().Select(p => p.Name).Aggregate((p1, p2) => p1 + "," + p2);

2
您可以使用比纯反射更高效的 TypeDescriptor 类:
string.Join(",", TypeDescriptor.GetProperties(instance).Select(p => p.Name))

1
String.Join(",", typeof(Product).GetProperties().Select(p => p.Name))

如果您不想使用 Linq,您可以通过迭代 GetProperties 返回的 PropertyInfo 数组,并将名称连接到字符串中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接