配列からディクショナリを作成する方法

大丈夫このリストを持っている:

object[] test;
test[0]=null;
....
test[8700]=null;
test[8701]= object[]
....
test[9431]= object[]

object []は、true/false/nullのいずれかの値を持つ別のリストです。

私はこの配列をヌルなしの値だけを含むlist/dictinaryに変換する必要があります:

Dictionary dic = new Dictionary;

または

list sectまたはs= new list()

where sectまたは looks like this

Sectまたは{(int)id,(List)products}
Product{(int)id}    

これを行うには最高の/最も賢い方法は何でしょうか?

前もって感謝します

3
この質問が「配列から辞書を作成する方法」であれば、 null 以外の値を選択するのは簡単だが、適切なインデックスを取得するのは難しいもう一度検索することなく。 LINQを使わないで単純な forループを使って辞書を作成するのは、最も単純で読みやすく、最速の方法だと思います。
追加された 著者 Tim Schmelter,
あなたの object [] には何が入っていますか?私はそれを取る test はオブジェクト配列自体ですか?
追加された 著者 Adam Houldsworth,
あなたのオブジェクトテストはどのように初期化されていますか?
追加された 著者 Andy Rose,
@AdamHouldsworth私はそれが助けることを望む質問を編集している
追加された 著者 Kimtho6,
@MamtaDalal私はidが無傷であることが必要なので、解決策はうまくいかない
追加された 著者 Kimtho6,
これは次のように役立ちます: stackoverflow.com/questions/1939293/…
追加された 著者 Mamta D,

2 答え

オブジェクトのインデックスを提供する 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);
3
追加された
Dictionary keyed = test
    .Select((obj, index) => Tuple.Create(obj, index))
    .Where(x => x.Item1 != null)
    .ToDictionary(x => x.Item2, x => x.Item1);

しかし、配列はより速くなります;配列があまりにもまばらでない場合は、それを覚えておいてください。

1
追加された