NextResult () заставляет читателя перейти к следующему набору результатов, возвращающемуся из запроса. То, как вы это написали, пропустит первый набор результатов (вероятно, единственный).
Шаблон, который, я думаю, вам нужен:
if (reader.HasRows)
{
do
{
while (reader.Read())
{
...
}
}
while (reader.NextResult());
}
Это проверит, есть ли какие-либо результаты, и если да, прочитайте результаты в каждом наборе результатов, пока не останется больше для чтения.
РЕДАКТИРОВАТЬ : Основано на комментарии:
Для JSON рассмотрите использование списка временных объектов, а затем DataContractJsonSerializer:
public class DateClass
{
public string AvgDate { get; set; }
public int MarkerID { get; set; }
}
...
var dates = new List<DateClass>();
if (reader.HasRows)
{
while (reader.Read())
{
var date = new DateClass { AvgDate = reader["AvgDate"].ToString(), MarkerID = (int)reader["MarkerID"] };
dates.Add( date );
}
}
var stream = new MemoryStream();
var serializer = new DataContractJsonSerializer( typeof(DateClass) );
serializer.WriteObject( stream, dates );
stream.Seek( 0, SeekOrigin.Begin );
return stream.ToString();