gpt4 book ai didi

c# - Null Dapper.net 查询仍然使用 FirstOrDefault() 返回 Null Reference Exception

转载 作者:太空狗 更新时间:2023-10-29 21:04:06 25 4
gpt4 key购买 nike

我想使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com