using (IDbConnection db = dbFactory.OpenDbConnection()) {
List<long> x = db.SelectLazy<long>(
"SELECT Id FROM MyTable").ToList();
}
为什么 x 为空?
当我使用 Select 而不是 SelectLazy 时,或者当我在整行而不仅仅是 Id 上使用 SelectLazy 时,它会起作用。
最佳答案
在 OrmLite 中,您可以使用不同的 API 来匹配您想要的结果,例如:
-
Select*
用于返回List<MyTable>
的 API -
Column*
用于返回一列字段值的 API,例如List<long>
-
Single*
用于返回单行的 API,例如Table
-
Scalar*
用于返回单个字段值的 API,例如long
因此,要选择一列作为字段列表,请使用 db.Column
,例如:
var results = db.Column<long>(db.From<MyTable>().Select(x => x.Id));
这些还有原始 Sql*
等价物,例如:
var results = db.SqlColumn<long>("SELECT Id FROM MyTable");
关于ServiceStack SelectLazy<long> System.NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410610/