0
私はC#プロジェクトでLINQクエリを作成していますが、コンパイラは計算フィールド 'Enabled'が嫌いです。C#LINQ選択句の計算フィールドとサブクエリを使用したクエリ
タイプが異なるため、(a.Qtty * a.Price)とサブクエリの比較はできません。最初のものはdouble型で、2つ目は匿名型です。
私はあらゆる種類のキャストを試しましたが、動作させることはできませんでした。
私はwhere節を削除してより簡単になり、optionTypesは列挙型です。
計算された値とサブクエリの比較を削除しても問題ありません。
助けが必要ですか?匿名型を作成しますが、単に値を選択していない、
(a.Qtty * a.Price)
<=
_ctx.Items.Where().Select(b => new { b.Qtty }).FirstOrDefault()
は、この問題を解決するには:
を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'を選択するだけです。 –