11
votes

Convertir IEnumerable en chaîne []

J'ai une entité appelée produit xxx pré>

et j'ai une liste de tous les produits: p> xxx pré>

Je veux obtenir un tableau des chaînes de cette liste de produits Cette matrice contiendra l'ID de produit + Nom du produit, alors lorsque j'essaie de la jeter à l'aide du code suivant: P>

string ProductToString(Product p)
{
    return p.Name;
}


0 commentaires

4 Réponses :


2
votes
string[] s = products.Select(p => p.Id + ' ' + p.Name).ToArray();

0 commentaires

28
votes

Eh bien, étant donné cette méthode que vous pouvez utiliser 1 : xxx

Cependant, il serait plus idiomatique de le faire sans méthode distincte, généralement à l'aide d'une expression Lambda: xxx

Je n'utiliserais qu'une méthode distincte si elle allait être appelée à partir de divers endroits (assurer la cohérence) ou un beaucoup de travail.

Edit: Je viens de remarquer que votre Description (désignant ID + nom) ne correspond pas réellement à la méthode ProductTostring 'vu donné (qui donne juste le nom). Pour le nom ID +, j'utiliserais: xxx

ou xxx

ou vous pouvez simplement changer votre ProduitsTostring méthode, bien sûr.

Alternativement, vous pouvez remplacer tostring () dans produit , si cela est habituellement < / em> Comment vous voulez convertir un produit à un chaîne . Vous pouvez ensuite utiliser une conversion de groupe de méthodes ou une expression lambda pour appeler tostring .


1 Il est possible que vous n'ayez pas besoin de Pour spécifier l'argument de type explicitement - que: xxx

fonctionnera bien - les règles de conversation de groupe et de groupe de méthode me confondent toujours et le comportement du compilateur a légèrement changé au fil du temps. Un test rapide semble maintenant que fait fonctionne, mais il pourrait y avoir des subtilités dans légèrement différentes situations.


2 commentaires

IMHO Vous n'êtes pas obligé d'écrire le IN et bien sûr, vous m'avez battu par 30 secondes ....


@ Carstenkönig: C'est May dépend de quelle version du compilateur que vous utilisez. Il y avait des changements subtils dans le compilateur V4, IIRC. J'ajoutais une note à ce sujet autour du temps que vous commenciez :)



1
votes

Utilisez

string[] s = (from p in products select p.Id.ToString() + " " + p.Name.ToString()).ToArray();


0 commentaires

-1
votes

Ceci a fonctionné pour moi: xxx

mi_customer doit être votre objet, dans mon cas est une table.


0 commentaires