Як створити словник з масиву

Гаразд мати цей список:

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

де об'єкт [] - це інший список із значенням true/false/null

Мені потрібно перетворити цей масив у список/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 для створення словника є найбільш прямолінійним, зрозумілим і швидким способом.
додано Автор Tim Schmelter, джерело
Що таке у вашому object [] ? Я вважаю, що test це самий масив об'єкта?
додано Автор Adam Houldsworth, джерело
Яка ініціалізована ваша тестова об'єкт як?
додано Автор Andy Rose, джерело
@ АдамХолдсворт У мене є питання редагування сподіваюся, що це допомагає
додано Автор Kimtho6, джерело
@MamtaDalal Мені потрібно, щоб ідентифікатор був недоторканим, щоб рішення не працювали
додано Автор 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);

Мала увага, однак - масив буде швидшим; p Якщо масив не теж рідкий, ви можете просто тримати це удар.

1
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug