gpt4 book ai didi

在 Select 子句中使用计算字段和子查询的 C# LINQ 查询

转载 作者:行者123 更新时间:2023-11-29 18:06:23 24 4
gpt4 key购买 nike

我正在我的 C# 项目中编写一个 LINQ 查询,如下所示,但编译器不喜欢计算字段“Enabled”。

它说(a.Qtty * a.Price)和子查询之间无法进行比较,因为类型不同。第一个是 double 类型,第二个是匿名类型。

我尝试过各种类型的转换,但没有成功。

我删除了 where 子句以使其更简单,并且 optionTypes 是一个枚举。

如果我删除计算值和子查询之间的比较,它就可以正常工作。

有什么帮助吗?

dynamic fromOthers = _ctx.Orders
.Where( /* conditions */ )
.Select(a => new
{
Id = a.Id,
Option = a.OpType == OptionTypes.Buy ? "Buy" : "Sell",
Enabled =
(a.OpType == OptionTypes.Buy
? (a.Qtty * a.Price) <=
_ctx.Items
.Where( /* conditions */ )
.Select(b => new
{
b.Qtty
})
.FirstOrDefault() ? "Yes" : "No"
: "TBD"
)
})
.ToList();

最佳答案

将数值(我猜是小数)与匿名类型进行比较:

(a.Qtty * a.Price)
<=
_ctx.Items.Where().Select(b => new { b.Qtty }).FirstOrDefault()

要解决此问题,请不要创建匿名类型,而只需选择值:

(a.Qtty * a.Price)
<=
_ctx.Items.Where().Select(b => b.Qtty).FirstOrDefault()

关于在 Select 子句中使用计算字段和子查询的 C# LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47781047/

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