2016-02-25 9 views
2

Я не мог найти это нигде. Я массив списков:Подсчитать ненулевые элементы в массиве списков

public List<xmldata>[] XMLArrayList = new List<xmldata>[9999]; 

Для инициализации и вставить список в каждую позицию, я делаю следующее:

for(int m=0; m< XList.XMLArrayList.Count(); m++) 
{ 
    XList.XMLArrayList[m] = new List<xmldata>(); 
} 

Но я хотел бы, чтобы подсчитать, сколько элементов там Арен» t null. EX: Позиции от 0 до 5 имеют список на них. Но других позиций нет.

Пробовал LinQ подход:

int count = XList.XMLArrayList.Count(x => x != null); 

Но он возвращает мне размер массива (9999). Как я могу подсчитать ненулевые элементы в массиве списков? Ps: Уже пробовал словарь и список List - этот подход работает лучше всего для достижения того, что мне нужно.

Спасибо.

+1

Если инициализировать все позиции массива в новый список, то ни один из них не равны нулю, и вы должны получить длину массива , – juharr

+0

@ GediminasMasaitis В этом случае это так. – juharr

+1

Возможно, вы хотите * пустые * элементы, а не * нулевые элементы? – Gusman

ответ

5

Попробуйте это:

int count = XList.XMLArrayList.Count(x => x.Count()>0); 
+0

Точно! В ожидании. Благодарю. –

+1

Поскольку эти списки позволяют использовать свойство 'Count' вместо метода расширения' Count() '. – juharr

+2

Это немного чище: 'XList.XMLArrayList.Count (c => c.Any());' –

0

вы также можете сделать это

XList.XMLArrayList.Where(x => x.Any()).Count(); 
+1

это не скомпилируется, вы используете XMLArrayList как метод. – kai

+0

@kai Да, вы правы ... исправил его – Viru

Смежные вопросы