我有一个属性IList CategoryIDs,以及一个包含逗号分隔列表的私有字符串变量,如何优雅地填充IList集合?
我问管理员,我学会了用.AddRange(...)填充List的简洁方法,但现在我意识到我必须让属性返回IList,它似乎不支持.AddRange方法。 / p>
答案 0 :(得分:9)
public IList CategoryIDs
{
get
{
return list.Split(',')
.ToList<string>()
.ConvertAll<int>(new Converter<string, int>(s => int.Parse(s)));
}
}
答案 1 :(得分: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(','); } }
答案 2 :(得分:0)
只需创建一个新列表,使用您需要的方法,然后返回List。由于List实现了IList,因此它对该属性有效。
答案 3 :(得分:0)
您也可以重复使用添加:
var IDs = from s in commaSeparatedList.Split(',')
select int.Parse(s);
foreach(var id in IDs)
theIList.Add(id);
答案 4 :(得分: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));
}
}