2011-09-01 5 views
1

J'ai une listeComment ajouter des guillemets autour de chaque élément de la liste après .add?

private List<string> additionalHeaderMeta = new List<string>(); 

et je veux la sortie dans un fichier csv. Tout ce qui fonctionne trouve mais il se trouve que certains des éléments que j'ajoute à additionalHeaderMeta peuvent parfois avoir des virgules en eux qui, de toute évidence, détruisent un fichier csv. Comment puis-je mettre des guillemets autour de chaque élément après l'ajout de l'élément?

J'ai essayé

additionalHeaderMeta.Select(i => "\"" + i + "\""); 

Mais pas de chance là-bas.

+2

Que voulez-vous dire par aucune chance? – leppie

+1

Peut-être 'additionalHeaderMeta = additionalHeaderMeta.Select (i =>" \ "" + i + "\" "). ToList();' serait plus chanceux? – jball

Répondre

2

Si vous souhaitez modifier la liste, il vous suffit de la faire défiler.

for (int index = 0; index < list.Count; index++) 
    list[index] = /* modify item here */ 

Qu'est-ce que vous avez fait est de créer une définition de la requête qui serait évalué paresseusement, mais vous auriez fait à itérer sur la requête. Utilisez la requête si vous voulez réellement laisser la liste non modifiée, mais simplement vouloir projeter les données dans le formulaire modifié.

var query = additionalHeaderMeta.Select(i => "\"" + i + "\""); 
foreach (var item in query) 
    do whatever 

Pour remplacer simplement votre liste avec une autre entièrement, utilisez ToList() sur la requête et réaffectez le résultat à votre liste initiale.

additionalHeaderMeta = additionalHeaderMeta.Select(i => "\"" + i + "\"").ToList(); 
+0

N'y a-t-il pas une approche simple? Je ne sais pas pourquoi je n'ai pas compris ton idée tout de suite ... Je viens juste d'essayer ce coup de pouce "essayer d'apprendre de nouvelles techniques". – Brad

+0

@Brad, vous pouvez dire 'list = list.Select (peu importe) .ToList();' Cela remplace votre liste existante par une autre liste d'éléments modifiés. Voir la mise à jour. –

+0

ah oui. J'aime ça! – Brad

1

Votre code exemple:

additionalHeaderMeta.Select(i => "\"" + i + "\""); 

fonctionnera très bien. Il renverra une nouvelle liste avec les citations ajoutées.

Il va pas modifier la liste existante - est-ce d'où vient votre confusion?

+0

alors ... 'additionalHeaderMeta = additionalHeaderMeta.Select (i =>" \ "" + i + "\" ");' le ferais-tu? – Brad

+1

Ne pas oublier le '.ToList()'. – jball

+0

'Select' renvoie un' IEnumerable 'que vous n'avez pas pu réattribuer dans votre variable' List '. Donc, si vous voulez réutiliser la même variable, oui, vous devez ajouter un '.ToList()'. Mais si vous voulez juste opérer sur la liste citée, il n'est peut-être pas nécessaire de l'assigner dans votre variable 'additionalHeaderMeta'. –

Questions connexes