[英]C# LINQ Query with Calculated Field and Subquery in a Select Clause
我正在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();
您將數值(我猜是decimal
)與匿名類型進行比較:
(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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.