public static async Task <Taxon[]> GetSubtaxaAsync(Taxon taxon) { List <Taxon> result = new List <Taxon>(); string table_name = Taxon.TypeToDatabaseTableName(taxon.GetChildRank()); string parent_column_name = Taxon.TypeToDatabaseColumnName(taxon.type); if (string.IsNullOrEmpty(table_name)) { return(result.ToArray()); } string query = "SELECT * FROM {0} WHERE {1} = $parent_id"; using (SQLiteCommand cmd = new SQLiteCommand(string.Format(query, table_name, parent_column_name))) { cmd.Parameters.AddWithValue("$parent_id", taxon.id); using (DataTable rows = await Database.GetRowsAsync(cmd)) foreach (DataRow row in rows.Rows) { result.Add(Taxon.FromDataRow(row, taxon.GetChildRank())); } } // Sort taxa alphabetically by name. result.Sort((lhs, rhs) => lhs.name.CompareTo(rhs.name)); return(result.ToArray()); }
public static async Task <Taxon[]> GetTaxaAsync(string name, TaxonRank rank) { List <Taxon> taxa = new List <Taxon>(); string table_name = _getRankTableName(rank); if (string.IsNullOrEmpty(table_name)) { return(null); } using (SQLiteCommand cmd = new SQLiteCommand(string.Format("SELECT * FROM {0} WHERE name = $name OR common_name = $name", table_name))) { cmd.Parameters.AddWithValue("$name", name.ToLower()); using (DataTable table = await Database.GetRowsAsync(cmd)) foreach (DataRow row in table.Rows) { taxa.Add(Taxon.FromDataRow(row, rank)); } } return(taxa.ToArray()); }