2012-02-02 3 views
1

У меня есть веб-страница, которая запрашивает базу данных и сохраняет результаты в типе типа сопоставленного массива. проблема заключается в том, что некоторые из «строк» ​​в результатах являются нулевыми, поэтому я мог бы вернуть 20 записей, а первые три могут быть нулевымиУдалить ненулевые элементы из словаря

поэтому я просматриваю каждый отдельный массив и проверяю, является ли это нулевым , поэтому мои вопросы: как удалить это из коллекции массива.

, если я что-то вроде

Objects[i].Remove(Objects[i].Keys.ToString()); 

Я получаю сообщение об ошибке, потому что объекты [я] является нулевым

+0

Неясно, что вы на самом деле пытаетесь сделать, какие типы вовлеченных т.д. Пожалуйста, прочитайте http://tinyurl.com/so-hints и уточнить ваш вопрос. Обратите внимание, что вызов 'Dictionary <,> .Keys.ToString()' редко будет делать то, что вы хотите ... –

+4

Не можете ли вы предотвратить создание массива с нулями в первую очередь? –

+0

Может ли ключ быть NULL ??? – Pranav

ответ

0

Iterate/цикл по коллекции со спины (его последний элемент в направлении первого). Проверьте значение null, удалите его соответствующим образом. Общая конструкция:

for(int n = collection.length; n >= 0; n--) 
{ 
    if(collection[n] == null) 
    { 
     // delete collection[n] 
    } 
} 
+0

-1 Вы не можете удалить из массива. –

+0

Во-первых, да, вы можете (это связано с тем, что называется повторной инициализацией массива и может быть инкапсулировано, чтобы быть прозрачным для ваших умных глаз). Во-вторых, речь шла не только о массивах; это было больше похоже на коллекции в целом - я цитирую: «Тип словаря сопоставленного массива». И, в-третьих, я назвал свой фрагмент кода как «общую конструкцию» - сколько еще предупреждений о «это общий подход к вашей общей проблеме», вы хотите ... –

+0

OP рассказывает о массиве. Удаление элементов из массива (само) не поддерживается. Доводка - это обычная практика, и ничего не нужно обманывать. –

2

Вы можете использовать Linq для решения проблемы. Предполагая, что вы работаете с Словарем:

//Sample data, this dictionary is the one you get from the query to the database 
Dictionary Objects= new Dictionary() 
{ 
    "key1" => "value1", 
    "key2" => null, 
    "key3" => "value3" 
}; 

//This will contain the same data as Objects but without the null values 
Dictionary Objects2 = (from kv in Objects 
    where kv.Value != null 
    select kv).ToDictionary(kv => kv.Key, kv => kv.Value); 
Смежные вопросы