/// <summary> /// Returns collection of SurveySubTotal objects from all surveys /// in survey_result table aggregated by table field parkCode /// </summary> /// <returns>List of all SurveySubtotal objects</returns> public IList <SurveySubtotal> GetSurveySubtotals() { IList <SurveySubtotal> surveySubtotalList = new List <SurveySubtotal>(); const string sql = "SELECT survey_result.parkCode,park.parkName, " + "COUNT(survey_result.parkCode) AS count_survey " + "FROM survey_result JOIN park ON park.parkCode = survey_result.parkCode " + "GROUP BY survey_result.parkCode, park.parkName " + "HAVING COUNT(survey_result.parkCode) >= 1 " + "ORDER BY count_survey DESC, park.parkName ASC"; using (SqlConnection conn = new SqlConnection(_connectionString)) using (SqlCommand cmd = new SqlCommand(sql, conn)) { conn.Open(); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { SurveySubtotal surveyTotal = GetSurveySubtotalFromReader(reader); surveySubtotalList.Add(surveyTotal); } } } return(surveySubtotalList); }
/// <summary> /// Helper method to populate and return SurveySubtotal /// object from survey_result table query /// </summary> /// <param name="reader">A datarow from survey_result table</param> /// <returns>SurveySubtotal object</returns> private SurveySubtotal GetSurveySubtotalFromReader(SqlDataReader reader) { SurveySubtotal surveySubtotal = new SurveySubtotal(); surveySubtotal.ParkCode = Convert.ToString(reader["parkCode"]); surveySubtotal.ParkName = Convert.ToString(reader["parkName"]); surveySubtotal.Total = Convert.ToInt32(reader["count_survey"]); return(surveySubtotal); }