public IEnumerable <WorkDay> GetWorkdaysByUser(QueryData queryData) { var storedProcedure = "Proc_WorkDay_GetByUser"; var parameter = new Hashtable(); parameter.Add("UserID", queryData.UserID); parameter.Add("StartDate", queryData.StartDate.ToLocalTime()); parameter.Add("EndDate", queryData.EndDate.ToLocalTime()); using (DataAccess dataAccess = new DataAccess()) { SqlDataReader dataReader = dataAccess.ExecuteReader(storedProcedure, parameter); while (dataReader.Read()) { var item = new WorkDay(); for (int i = 0; i < dataReader.FieldCount; i++) { var fieldTableName = dataReader.GetName(i); var fieldTableValue = dataReader.GetValue(i); var property = item.GetType().GetProperty(fieldTableName); if (property != null && fieldTableValue != DBNull.Value) { property.SetValue(item, fieldTableValue); } } yield return(item); } } }