public static List <WeatherInfo> GetWeatherInfo(DateTime sdate, DateTime edate, int q_count = 1000)
        {
            Database WeatherHelperDataContext = DatabaseConfig.GetWeatherHelperDatabase();

            if (q_count <= 0 || q_count > 1000)
            {
                throw new ArgumentOutOfRangeException("q_count should > 0 and q_count should <= 10000");
            }

            List <WeatherInfo> result = null;

            try
            {
                using (DbCommand command = WeatherHelperDataContext.GetSqlStringCommand(
                           @"SELECT TOP " + q_count + @" 
                           [AreaName]
                          ,[WCCountryName]
                          ,[WeatherID]
                          ,[AreaCode]
                          ,[WCCode]
                          ,[Temperature]
                          ,[Skycode]
                          ,[Skytext]
                          ,[Observationtime]
                          ,[Observationpoint]
                          ,[Feelslike]
                          ,[Humidity]
                          ,[Windspeed]
                          ,[Winddisplay]
                          ,[SkycodeImg]
                          ,[Low]
                          ,[High]
                          ,[Shortday]
                          ,[WeatherStatus]
                          ,[CDate] 
                            FROM [V_WeatherData]
                            where  (CDate <= @edate and CDate >= @sdate) 
                           order by left(CDate,8), CAST([AreaCode] as int) 
"))
                {
                    WeatherHelperDataContext.AddInParameter(command, "@sdate", DbType.DateTime, sdate);
                    WeatherHelperDataContext.AddInParameter(command, "@edate", DbType.DateTime, edate);
                    IDataReader reader = WeatherHelperDataContext.ExecuteReader(command);
                    result = new List <WeatherInfo>();

                    while (reader.Read())
                    {
                        WeatherInfo response = new WeatherInfo();
                        response.AreaName         = reader["AreaName"].ToString();
                        response.CountryName      = reader["WCCountryName"].ToString();
                        response.WeatherID        = reader["WeatherID"].ToString();
                        response.AreaCode         = reader["AreaCode"].ToString();
                        response.WCCode           = reader["WCCode"].ToString();
                        response.Temperature      = reader["Temperature"].ToString();
                        response.Skycode          = reader["Skycode"].ToString();
                        response.Skytext          = reader["Skytext"].ToString();
                        response.Observationtime  = reader["Observationtime"].ToString();
                        response.Observationpoint = reader["Observationpoint"].ToString();
                        response.Feelslike        = reader["Feelslike"].ToString();
                        response.Humidity         = reader["Humidity"].ToString();
                        response.Windspeed        = reader["Windspeed"].ToString();
                        response.Winddisplay      = reader["Winddisplay"].ToString();
                        //response.SkycodeImg = reader["SkycodeImg"].ToString();
                        response.Low           = reader["Low"].ToString();
                        response.High          = reader["High"].ToString();
                        response.Shortday      = reader["Shortday"].ToString();
                        response.WeatherStatus = reader["WeatherStatus"].ToString();
                        response.CDate         = Convert.ToDateTime(reader["CDate"]);

                        result.Add(response);
                    }

                    return(result);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }