簡體   English   中英

在選擇子句中具有計算字段和子查詢的C#LINQ查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM