Subsonic a une grande méthode appelée ExecuteTypedList() afin que vous puissiez faire somethink comme ça.
List<int> result = DB.Select(Table.Columns.Id)
.Distinct()
.From<Table>()
.OrderBy(Table.Columns.Id)
.ExecuteTypedList<int>();
ou même avec pocos:
public class UserResult
{
public int Id {get;set;}
public string Name {get;set;}
}
List<UserResult> users = DB.Select(
User.Columns.UserId + " as Id", // the as ... is only needed if your
User.Columns.UserName + " as Name" // column name differs from the
).From<User>() // property name of your class
.ExecuteTypedList<UserResult>();
Malheureusement, cette méthode ne fonctionne pas pour la chaîne car elle nécessite a) un valuetype b) une classe avec un constructeur sans paramètre car la méthode utilise la réflexion pour mapper les colonnes du résultat aux propriétés de la classe
Cependant, j'ai écrit une méthode d'extension il y a un certain temps qui fonctionne pour la chaîne:
Use the Subsonic.Select() ExecuteTypedList Method with String
Regardez ma propre réponse dans le lien.
Si vous ajoutez le extensionmethod à votre code que vous pouvez faire:
List<String> result = DB.Select(User.Columns.UserName)
.From<User>()
.ExecuteTypedList();