如何从Array创建一个Dictionary

时间:2011-10-28 08:52:11

标签: c# arrays linq

好的有这个清单:

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}    

最好/最聪明的方法是什么?

提前致谢

2 个答案:

答案 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如果数组稀疏,你可能会继续这样做。