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();