powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как определить, что последовательность не содержит элементов?
14 сообщений из 14, страница 1 из 1
Как определить, что последовательность не содержит элементов?
    #37366099
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Трудолюбивый Незнайка осваивает LINQ и немного не понимает как поймать пустое перечисление.

Код: plaintext
1.
2.
var ag = from cag in ob.countryAgent
                         where cag.Id == int.Parse(idc)
                         select cag.AgentGuid;

Как узнать что там ничего нет?

Спасибо.
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366137
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
albert t,

IEnumerable<T>.Count() == 0
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366152
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stimpi, я правильно понимаю, что если бы было так

Код: plaintext
1.
2.
IEnumerable<int> ag = from cag in ob.countryAgent
                         where cag.Id == int.Parse(idc)
                         select cag.AgentGuid;
то ваш совет помог бы?
Потому что если
Код: plaintext
var
то ag.Count()==0 не работает(?)
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366171
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что именно не работает ?
метод Count() объявлен в интерфейсе IEnumerable<T>

результат линки будет как раз IEnumerable<T>, который и надо проверить
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366181
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
var q = from i in new[] { 1, 2, 3 }.AsQueryable()
                  where i > 2
                  select i;

          Console.WriteLine("Is Empty ? {0}", q.Count() == 0);
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366199
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что я делаю не так?

Код: plaintext
1.
2.
3.
4.
5.
string s;
        var test = from i in new List<int> { 1, 2, 3 }
                   where 1 == 0
                   select i;
        if(test.Count()==0) s="work";
        s = "dnot work";
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366211
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sorry else пропустил
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366218
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понимаю надо проверить результат linq на то что он наследует IEnumerable<T> и тогда можно использовать Count

Или привести результат linq к IEnumerable<T>

Так?
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366279
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
albert t,

не надо ничего приводить, результатом "select i" и есть IEnumerable<T> (в дебаге посмотрите)


что вы хотите получить на выходе ??

автор
Код: plaintext
1.
2.
3.
4.
5.
string s;
        var test = from i in new List<int> { 1, 2, 3 }
                   where 1 == 0
                   select i;
        if(test.Count()==0) s="work";else
        s = "dnot work";


в данном случае у вас в коллекции на выходу будет 0 элементов, тк для каждого значения входящей коллекции условие истины ложно
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366301
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stimpi,

та я и хотел чтобы пустое. Я не могу понять почему у меня иногда не работает .Count()
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37366312
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
albert t,

проверте
Код: plaintext
using System.Linq;
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37367383
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Трудолюбивый Незнайка разобрался. Наполовину.

Реальный пример был большой и я его сюда не тащил. А надо было бы. Дело в том что результат linq получался в том числе из базы данных из хранимой процедуры. И при попытке использовать .Any() или .Count() происходило вычисление запроса и дальнейшие перечисления не работали из-за исключения "Не удается перечислить результаты запроса более одного раза"

Собственно говоря http://positivealex.livejournal.com/12789.html] вот

Возможно у кого-то есть варианты более разумного решения проблемы? Потому что одно дело тащить var и совсем другое определять тип а в сложных запросах дополнительные классы для создания этих промежуточных list в памяти.

Спасибо.
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37367460
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в чем проблема

Код: plaintext
1.
2.
3.
4.
5.
var ag = (from cag in ob.countryAgent
                         where cag.Id == int.Parse(idc)
                         select cag.AgentGuid).ToArray(); //сразу вытащить данные и запихнуть их в массив
ag.Count(); //один
ag.Count(); //два
ag.Count(); // контрольный ) 
...
Рейтинг: 0 / 0
Как определить, что последовательность не содержит элементов?
    #37367500
albert t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stimpi

Теперь уже нет проблем. Пока нет.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как определить, что последовательность не содержит элементов?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]