gpt4 book ai didi

c# - 使用 Sum 方法和 Nhibernate 时集合为空时不会出现异常

转载 作者:太空狗 更新时间:2023-10-29 22:32:57 25 4
gpt4 key购买 nike

我有一个带有 NHibernate 的 IQueryable,我想用一个 linq 查询来对特定列求和,但是,当我在 Where 方法上的条件给我一个空的结果我不想得到异常,但我不想点击查询来获取所有记录,在它对内存求和之后,我想要类似 coalese sql 命令的东西,例如:

// I get exception when its empty
var query = MyQueryable()
.Where(x => x.IsDone)
.Select(x => x.Value)
.Sum();

我必须做这样的事情:

// I get 0, its ok, but ToList(), list all records on memory, 
// I just want to get a single value

var query = MyQueryable()
.Where(x => x.IsDone)
.Select(x => x.Value)
.ToList()
.Sum();

有什么办法吗?

谢谢。

最佳答案

您需要将 Value 转换为可为 null 的类型。

例如,假设 Value 是一个 int 属性:

var result = MyQueryable()
.Where(x => x.IsDone)
.Select(x => (int?)x.Value)
.Sum()
?? 0;

由于可空枚举的 Sum() 将为空源返回 null,因此合并运算符 (??) 负责在发生这种情况时返回 0。

关于c# - 使用 Sum 方法和 Nhibernate 时集合为空时不会出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242506/

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