Subsonic имеет отличный метод, называемый ExecuteTypedList (), так что вы можете сделать что-то подобное.
List<int> result = DB.Select(Table.Columns.Id)
.Distinct()
.From<Table>()
.OrderBy(Table.Columns.Id)
.ExecuteTypedList<int>();
или даже с 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>();
К сожалению, этот метод не работаетдля строки, так как для этого требуется a) тип значения b) класс с конструктором без параметров, поскольку метод использует отражение, чтобы отобразить столбцы из результата в свойства класса
Однако я написал метод расширения некоторое время назадэто работает для строки:
Используйте метод Subsonic.Select () ExecuteTypedList со строкой
Посмотрите на мой собственный ответ в ссылке.
ЕслиВы добавляете метод расширения в свой код, который можете сделать:
List<String> result = DB.Select(User.Columns.UserName)
.From<User>()
.ExecuteTypedList();