2009-10-06 5 views
3

J'ai une propriété IList CategoryIDs, et une variable de chaîne privée qui contient une liste séparée par des virgules, comment remplir élégamment la collection IList? J'ai demandé Earler et j'apprends une manière ordonnée de peupler la liste avec. AddRange (...), mais maintenant j'ai réalisé que je dois avoir la propriété return IList qui ne semble pas soutenir la méthode .AddRange.Utilisation d'un IList, comment le peupler via une liste d'ID séparés par des virgules

Répondre

9
public IList CategoryIDs 
{ 
    get 
    { 
     return list.Split(',') 
       .ToList<string>() 
       .ConvertAll<int>(new Converter<string, int>(s => int.Parse(s))); 
    } 
} 
+0

+1 pour une solution one-liner –

+0

Mais je dois IList pas les chaînes , donc .ToList (); ne fonctionnera pas? – mrblah

+0

Terminé. J'ai édité ma réponse. – manji

0

Il suffit de créer une nouvelle liste, d'utiliser les méthodes dont vous avez besoin et de retourner la liste. Puisque List implémente IList, il sera valide pour cette propriété.

1
 
// assignment 
var ids = "1,2,3,4,5"; 
obj.CategoryIDs = ids.Split(','); 
// or - if you want "add" capabilities 
obj.CategoryIDs = new ArrayList(ids.Split(',')); 

// encapsulation 
IList CategoryIDs 
{ 
    get { return ids.Split(','); } 
} 
0

Vous pouvez aussi utiliser de façon répétée ajouter:

var IDs = from s in commaSeparatedList.Split(',') 
      select int.Parse(s); 
foreach(var id in IDs) 
    theIList.Add(id); 
0

Essayez ceci:

public class Class1 
{ 

    private String categoryIDList = "1,2,3"; 

    public Class1() 
    { 

     List<Int32> categoryList = new List<Int32>(); 

     String[] categoryIDs = categoryIDList.Split(","); 

     foreach(String category in categoryIDs) 
      categoryList.Add(Int32.Parse(category)); 

    } 

} 
Questions connexes