2009-10-06 5 views
3

У меня есть свойство IList CategoryID и приватная строковая переменная, которая содержит список, разделенный запятыми, как изящно заполнять коллекцию IList?Использование IList, как заполнить его через список разделенных запятыми идентификаторов

Я спросил ухо, и я узнал аккуратный способ заполнить список с помощью .AddRange (...), но теперь я понял, что должен вернуть свойство IList, который, похоже, не поддерживает метод .AddRange.

ответ

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

+1 за один-лайнер решения –

+0

Но мне нужно IList не строки , поэтому. ToList (); не будет работать? – mrblah

+0

Готово. Я отредактировал свой ответ. – manji

0

Просто создайте новый список, используйте нужные методы и верните список. Поскольку List реализует IList, он будет действителен для этого свойства.

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

Вы также можете просто использовать добавить несколько раз:

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

Попробуйте это:

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)); 

    } 

}