2012-05-26 2 views
1

Environnement: asp.net fx3.5obtenir le nom de la propriété de la liste générique

donné

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

j'ai une collection List<Product>.

Y at-il un moyen d'obtenir les noms de propriété parce que je veux qu'ils soient une ligne d'en-tête dans mon fichier csv que je construis?

donc le résultat que je cherche est un string = "ProductId,ProductName,UnitPrice"

+0

http://stackoverflow.com/a/1998049/139698 - J'aime la solution suivante mais je ne comprendre les commentaires sur les performances possibles à l'aide du générateur de chaînes. J'ai donc fait quelques recherches et trouvé ce qui suit et l'a mis en œuvre: http://www.csharp411.com/c-convert-string-to-stream-and-stream-to-string/ - Était-ce à quoi les commentaires faisaient référence? ? – Rod

Répondre

1

Vous pouvez utiliser la classe TypeDescriptor (ce qui est plus efficace que la réflexion ordinaire):

string.Join(",", TypeDescriptor.GetProperties(instance).Select(p => p.Name)) 
3
var headers = this.GetType().GetProperties().Select(p => p.Name).Aggregate((p1, p2) => p1 + "," + p2); 
0
String.Join(",", typeof(Product).GetProperties().Select(p => p.Name)) 

Si vous ne souhaitez pas utiliser LINQ, vous pouvez simplement parcourir le tableau PropertyInfo retourné par GetProperties et concaténer les noms à une chaîne.

Questions connexes