2010-09-04 3 views
3

j'ai une liste < String> commeManipuler Liste <String> LINQ en C#

List<String> ListOne = new List<string> { "A-B", "B-C" }; 

i besoin de diviser chaque chaîne si elle contient '-' et ajouter à la même liste

Ainsi, le résultat sera comme

{ "A-B", "B-C","A","B","C" }; 

maintenant, je suis en utilisant comme

 for (int i = 0; i < ListOne.Count; i++) 
     { 
      if (ListOne[i].Contains('-')) 
      { 
       List<String> Temp = ListOne[i].Split('-').ToList(); 
       ListOne= ListOne.Union(Temp).ToList(); 
      } 
     } 

est-il un moyen de le faire en utilisant LINQ?

Répondre

4
ListOne.Union(ListOne.SelectMany(i => i.Split('-'))) 
+0

Ce ne sera pas ajouter à la même liste, il va créer une nouvelle '' IEnumerable JaredPar

+0

@JaredPar si c'est ce qu'il cherche, le vôtre est probablement plus efficace, mais il est trop tard où je dois faire des tests. –

+0

pas inquiet du tout au sujet de l'efficacité. Juste en notant la légère différence dans ce que le PO demandait. Le vôtre pourrait être facilement modifié pour le rencontrer. – JaredPar

3

Effectuez les opérations suivantes

List.AddRange(
    ListOne 
    .Where(x => x.Contains("-")) 
    .SelectMany(x => x.Split('-')) 
    .Distinct() 
    .ToList()); 
Questions connexes