/// <summary> /// Selects all rows. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="whereClause">The where clause.</param> /// <returns></returns> public List <T> SelectAllRows <T>(string whereClause = "") where T : new() { var objectList = new List <T>(); SQLiteDataReader reader = null; try { var objectType = typeof(T); var properties = objectType.GetProperties(BindingFlags.Public | BindingFlags.Instance); string sqlQuery = SQLiteQuery.SelectAllFrom(objectType.Name, whereClause); reader = SQLiteQuery.ExecuteReader(sqlQuery, this.Connection); while (reader.Read()) { var newObject = new T(); foreach (var property in properties) { if (property.IsDataMember()) { if (reader[property.Name].HaveContent() || property.PropertyType.IsString()) { Type type = property.PropertyType; TypeExtension.GetDataType(type, out type); object propertyValue = reader[property.Name]; dynamic changedObject = Convert.ChangeType(propertyValue, type); property.SetValue(newObject, changedObject, null); } } } objectList.Add(newObject); } } catch (Exception exception) { APILog.Error(this, "SelectAllRows", exception); } finally { if (reader != null) { reader.Close(); reader = null; } } return(objectList); }