好的有这个清单:
object[] test;
test[0]=null;
....
test[8700]=null;
test[8701]= object[]
....
test[9431]= object[]
其中object []是另一个值为true / false / null
的列表我需要将此数组转换为仅包含不带null的值的list / dictinary:
Dictionary<int, object> dic = new Dictionary<int,object>;
或
list<Sector> sectors= new list<Sector>()
扇区看起来像这样
Sector{(int)id,(List<Product>)products}
Product{(int)id}
最好/最聪明的方法是什么?
提前致谢
答案 0 :(得分:3)
使用提供对象索引的Select()
重载:
test.Select((t,i) => new Sector { id = i, products = t })
.Where(s => s.products != null).ToList();
或者获取字典:
test.Select((t,i) => new Sector { id = i, products = t })
.Where(s => s.products != null).ToDictionary(s => s.id, s => s.products);
答案 1 :(得分:1)
Dictionary<int,object> keyed = test
.Select((obj, index) => Tuple.Create(obj, index))
.Where(x => x.Item1 != null)
.ToDictionary(x => x.Item2, x => x.Item1);
但要注意的是 - 数组会更快; p如果数组太稀疏,你可能会继续这样做。