Ce n'QueryAsync() retour lors de la demande de 1..N valeurs à partir d'une seule colonne de type chaîne?

Avec ce code (avec ou sans le ".ToList()"):

public async Task<List<String>> SelectDistinctGroupNames()
{
    var db = new SQLiteAsyncConnection(SQLitePath);
    var groupNames = await db.QueryAsync<List<string>>("SELECT DISTINCT GroupName FROM SOs_Locations");
    return groupNames.ToList();
}

...Je reçois, "Impossible de convertir implicitement le type de Système.Les Collections.Génériques.Liste>' pour 'Système.Les Collections.Génériques.Liste"

Cela fonctionne:

public async Task<HashSet<String>> SelectDistinctGroupNames()
{
    var db = new SQLiteAsyncConnection(SQLitePath);
    var allLocations = await db.QueryAsync<SOs_Locations>("SELECT * FROM SOs_Locations ORDER BY GroupName");
    HashSet<string> hashsetGroupNames = null;
    foreach (var item in allLocations)
    {
        hashsetGroupNames.Add(item.GroupName);
    }
    return hashsetGroupNames;
}

...mais semble gaspillage (pour récupérer tous les enregistrements, quand tout ce que je veux est les valeurs distinctes des GroupName colonne).

Il me semble que ce qui est nécessaire est une Liste ou même un HashSet lors du remplacement de la "*" dans la requête sql avec un "DISTINCTES GroupName"

Qu'est-ce exactement est renvoyée lorsqu'une colonne unique à partir de plusieurs enregistrements est renvoyé? OIE, ce qui devrait être dans les équerres de l'appel à QueryAsync<>() ?

Je crois que cela devrait fonctionner:

public async Task<List<String>> SelectDistinctGroupNames()
{
    var db = new SQLiteAsyncConnection(SQLitePath);
    List<string> allLocations = await db.QueryAsync<string>("SELECT DISTINCT GroupName FROM SOs_Locations ORDER BY GroupName");
    return allLocations;
}

...mais avec ce que je reçois, "'string' doit être un non-type abstrait avec un public constructeur sans paramètre, afin de l'utiliser comme paramètre " T " dans le générique du type ou de la méthode 'SQLite.SQLiteAsyncConnection.QueryAsync(string, params object[])'"

J'ai eu une "chaîne" au-dessus de correspondre avec <SOs_Locations> (pas de "Liste<SOs_Locations>") dans la version de travail de la méthode. Quand j'ai changer pour "Liste<string>", j'obtiens "Impossible de convertir implicitement le type de Système.Les Collections.Génériques.Liste<System.Collections.Generic.List' à 'Système.Les Collections.Génériques.Liste<string>""

OriginalL'auteur B. Clay Shannon | 2012-12-09