gpt4 book ai didi

c# - Linq 的 FirstOrDefault 充当其他类型?

转载 作者:行者123 更新时间:2023-11-30 22:27:05 25 4
gpt4 key购买 nike

我有这段代码:

var res1 = dtData.AsEnumerable()
.Where(...)
.Select(f => new { val = f["PremiumAfterUWDiscount"].ToDecimalOrZero(),
idpolicy = f["IdPolicy"].ToString() })
.FirstOrDefault();

然而,因为这返回一个匿名类型,所以它的默认值为 null

我希望它作为 int 类型的 FirstOrDefault

所以如果没有记录,它将返回 0(默认行为为 int)。

这可能吗?

附注(当然我可以检查它的条件,但我仍然更喜欢 linq 方式)。

最佳答案

返回表示“无”的匿名类型并使用空合并运算符:

var res1 = dtData.AsEnumerable()
.Where(...)
.Select(f => new { val = f["PremiumAfterUWDiscount"].ToDecimalOrZero(),
idpolicy = f["IdPolicy"].ToString() })
.FirstOrDefault() ?? new { val = 0, idpolicy = "" };

或者 DefaultIfEmpty 扩展方法:

var res1 = dtData.AsEnumerable()
.Where(...)
.Select(f => new { val = f["PremiumAfterUWDiscount"].ToDecimalOrZero(),
idpolicy = f["IdPolicy"].ToString() })
.DefaultIfEmpty(new { val = 0, idpolicy = "" })
.FirstOrDefault();

如果你实际上返回一个 object 并稍后进行转换(根据@recursive 的回答),你将只能返回一个 int 来代替匿名类型,但这对我来说似乎适得其反。

FirstOrDefault 不提供指定“默认”是什么的方法。

关于c# - Linq 的 FirstOrDefault 充当其他类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11434789/

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