Если я хочу получить кучу строк, содержащих один столбец int
, используя Dapper, и этот набор результатов может быть пустым. Каков наилучший способ использовать Dapper для запроса этих данных?Как получить nullable int [] с dapper?
Для примера, если у меня есть следующий метод, который возвращает то, что я хочу:
public void int[] GetInts()
{
conn.Query<int?>("select 123 where 1=1")
.Where(x=> x.HasValue)
.Select(x => x.Value)
.ToArray();
}
Если я изменить строку на это:
conn.Query<int>("select 123 where 1=0").ToArray();
я получаю ошибку произнесения при наличии нет Результаты.
трассировки стека ниже и исключение составляет только ссылка на объект не установлено на экземпляр объекта при заливке (T)next
:
at Dapper.SqlMapper.<QueryInternal>d__13`1.MoveNext() in .\SqlMapper.cs:line 611
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in .\SqlMapper.cs:line 539
В чем исключение? Трассировки стека? –
Ни один из примеров не является компилируемым кодом. Не могли бы вы позаботиться о том, чтобы убедиться, что вы точно это сделали? ('x => v.Value' имеет опечатку и' .Query 'в сочетании с' x.HasValue' тоже не является законным.) И насколько актуальна ваша версия Dapper? –
@KirkWoll только что обновил Dapper сегодня, чтобы убедиться, что это не проблема с версией. – scottm