![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
![]()
Добрый день!
Я не привожу конкретный запрос, потому что у меня проблема общая для всех LINQ-селектов: как узнать количество отселектированных строк такого запроса? В частности, сегодня опять эта проблема возникла при необходимости сделать подзапрос к полученной из БД DataTable - не делать же ещё один почти такой же запрос непосредственно к удалённой БД! Это было бы не слишком грамотно. Конечно, можно прокрутить результат в цикле foreach. Есть ещё вариант: использовать цикл try-catch, т.к. LINQ в случае отсутствия записей выдаёт System.Exception (кстати, как тогда понять, что это отсутствие записей, а не какая-то другая ошибка?). Но существует ли менее дебильный способ узнать количество полученных записей? Спасибо за внимание. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
![]()
А у переменки, которая формируется от LINQ нет свойства length() ?
Или GetLEngth(Номер уровня)
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
![]()
В некоторых случаях действительно можно применить Count(). Правда, он в подсказке VC 2010 выглядит как типизированный: Count<>. Но я имею в виду случаи, когда на выходе не массив, а запросы, подобные следующему (здесь dsTable - источник данных типа DataTable):
Код:
Это работает, пока количество записей != 0. А если в результате не выбрано ни одной записи, срабатывает Exception, что крайне прискорбно. Последний раз редактировалось Stilet; 03.09.2012 в 15:39. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 02.09.2011
Сообщений: 336
|
![]()
Метод Count должен возвратить число, и исключение генерироваться не должно.
В Вашем же случае исключение генерируется потому что Вы из пустой последовательности пытаетесь извлечь первый элемент. Код:
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
![]()
Все-таки используется коллекция, как и при запросах множества записей. Я так пробовал, но не додумался использовать records.First(), т.е. указывать единственность ожидаемой строки не в запросе, а после него.
Спасибо, Петррр! Я попробовал - работает. Тогда позволю себе смежный вопрос: Какие исключения могут вызывать запросы LINQ to DataSet, кроме сакраментального System.Exception? Где посмотреть? Я в инете пока нигде не нашёл. |
![]() |
![]() |
![]() |
#6 | ||
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,022
|
![]() Цитата:
FirstOrDefault юзайте, если нет уверенности в данных. Цитата:
|
||
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать нумерацию записей, полученных запросом | Speeker | БД в Delphi | 3 | 30.11.2011 12:09 |
Как удалить переносы в результате запроса в Oracle | Sparkman | SQL, базы данных | 1 | 08.10.2010 05:23 |
Как узнать что число не Float(без остатка) при результате деления? | zotox | Помощь студентам | 7 | 19.07.2009 15:49 |
Рандомные помехи в результате запроса MySQL | Ivan_32 | SQL, базы данных | 0 | 17.07.2009 05:52 |
Ошибка отображения данных в результате sql запроса в BDE | Serjio77 | БД в Delphi | 9 | 31.05.2009 20:30 |