Используя IList, как заполнить его через разделенный запятыми список идентификаторов - PullRequest
3 голосов
/ 07 октября 2009

У меня есть свойство IList CategoryIDs и личная строковая переменная, которая содержит список через запятую, как элегантно заполнить коллекцию IList?

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

Ответы [ 5 ]

9 голосов
/ 07 октября 2009
public IList CategoryIDs
{
    get
    {
        return list.Split(',')
                .ToList<string>()
                .ConvertAll<int>(new Converter<string, int>(s => int.Parse(s)));
    }
}
1 голос
/ 07 октября 2009
// 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 голосов
/ 07 октября 2009

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

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

    }

}
0 голосов
/ 07 октября 2009

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

var IDs = from s in commaSeparatedList.Split(',')
          select int.Parse(s);
foreach(var id in IDs)
    theIList.Add(id);
0 голосов
/ 07 октября 2009

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

...