Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > как обойти в цикле все содержимео IEnumerable?


Автор: Stas123 5.7.2011, 17:18
Мне нужно сравнить сравнить по свойству все содержимое IEnumerable.
Видимо это лучше всего делать в цикле, но как? Так не получилось.
Код

for(int i=0; i<MainWindow.Instance.Pocets.Count(); i++ )
                {
                    if(MainWindow.Instance.Pocets[i].status == 2)
                        nActivePocet++;
                }

Автор: Fitc 5.7.2011, 19:39
Нифига не понятно что вы хотите... Добавьте конкретики

Автор: ДобренькийПапаша 6.7.2011, 07:13
Ну, конечно, не всё совсем понятно. Но, если концептуально smile , то, вроде бы, всё у вас правильно.
Вопрос остаётся следующий: что значит, что у вас ничего не получилось? Что конкретно не получилось? Если результат не тот, который вы ожидали, то это не значит, что сам проход организован неправильно - может ваш IEnumerable чем-то не тем заполнен?
Так что займитесь отладкой/трассировкой. Поставьте breakpoint в цикле, посмотрите что у вас в коллекции, да много каких способов отладки бывает smile

Автор: Stas123 6.7.2011, 08:29
Невозможно применить индексирование через [] к выражению типа "System.Collections.Generic.IEnumerable<Pocets>" (CS0021)
вот что не получилось.
Некоторые пробелы в знании синтаксиса дают о себе знать((
Как правильно обратится к члену IEnumerable?

Автор: Экскалупатор 6.7.2011, 08:46
в таком случае было бы не плохо показать как и где объявлены эти классы: MainWindow.Instance.Pocets[i].status. надо больше данных. покажи Pocets, тогда может быть станет более понятно...

Добавлено через 31 секунду
а заодно то место где он создается, ну в общем чем больше тем лучше

Автор: WarHog 6.7.2011, 08:48
ienumerable<T> не реализует [], используй foreach:
Код

foreach (var item in MainWindow.Instance.Pocets)
{
    if (item.status == 2)
        nActivePocet++;
}

если тебе нужно посчитать nActivePocet, то используя Linq это можно сделать т.о.:
Код

nActivePocet = MainWindow.Instance.Pocets.Count(i => i.Status == 2)

Автор: ДобренькийПапаша 6.7.2011, 09:07
Да, покажите, что у вас там такое творится - как IEnumerable имплементирован?

Автор: Stas123 6.7.2011, 09:11
WarHog, Спасибо.
Пожалуйста, пометьте тему как решенную, я не могу этого сделать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)