【发布时间】:2017-12-12 20:30:23
【问题描述】:
我正在我的 C# 项目中编写如下所示的 LINQ 查询,但编译器不喜欢计算字段“已启用”。
它说(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的定义。 -
对不起?我不明白你的问题..
-
您将
new { b.Qtty }与数值进行比较。只需选择b.Qtty而不将其包装成匿名类型。 -
@GertArnold 请将此作为答案发布
-
是的。效果很好!作为答案发布!
标签: c# mysql linq subquery calculated-field