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

时间:2012-05-26 00:06:28

标签: c#

环境: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"

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

您可以使用TypeDescriptor类(比普通反射更有效):

string.Join(",", TypeDescriptor.GetProperties(instance).Select(p => p.Name))

答案 2 :(得分:1)

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

如果您不想使用Linq,您可以遍历GetProperties返回的PropertyInfo数组,并将名称连接成字符串。