/// <summary> /// Execute the operation synchronously. /// </summary> /// <returns></returns> public override List <TimeSpan> Execute(object state = null) { var result = new List <TimeSpan>(); Prepare().Execute(cmd => { using (var reader = cmd.ExecuteReader()) { if (reader.FieldCount > 1 && !m_ListOptions.HasFlag(ListOptions.IgnoreExtraColumns)) { throw new UnexpectedDataException($"Expected one column but found {reader.FieldCount} columns"); } var columnCount = m_ListOptions.HasFlag(ListOptions.FlattenExtraColumns) ? reader.FieldCount : 1; var discardNulls = m_ListOptions.HasFlag(ListOptions.DiscardNulls); var rowCount = 0; while (reader.Read()) { rowCount++; for (var i = 0; i < columnCount; i++) { if (!reader.IsDBNull(i)) { result.Add((TimeSpan)reader.GetValue(i)); } else if (!discardNulls) { throw new MissingDataException("Unexpected null value"); } } } return(rowCount); } }, state); return(result); }