我想使用 Dapper.net 从表中返回最大 Id
var x = connection.Query<int>("SELECT max(val) FROM info").FirstOrDefault();
这行得通 - 除非不存在行,否则我会得到一个
Object reference not set to an instance of an object.
'OrDefault' 不应该意味着当没有记录存在时返回 0 吗?
如何返回 0 - 或一些非空值以防止崩溃。
谢谢
最佳答案
问题是您告诉 Dapper 期望一个 int
序列,但实际上您有可能是一个 null
值。所以你要么需要改变类型
var x = connection.Query<int?>("SELECT max(val) FROM info").Single() ?? 0;
或者您需要更改查询以处理 null
。
var x = connection.Query<int>("SELECT COALESCE(max(val), 0) FROM info").Single();
我在这里使用 Single
因为这个查询应该只返回一行。
当您期望一个序列并且只想要第一个项目时,或者如果没有项目您想要项目类型的默认值,您可以使用 FirstOrDefault
。
关于c# - Null Dapper.net 查询仍然使用 FirstOrDefault() 返回 Null Reference Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239217/