0
아래와 같이 C# 프로젝트에서 LINQ 쿼리를 작성하지만 컴파일러에서 계산 필드 '사용 가능'을 좋아하지 않습니다.C# LINQ 선택 절의 계산 된 필드 및 하위 쿼리
형식이 다르므로 (a.Qtty * a.Price)와 하위 쿼리를 비교할 수 없다고 말합니다. 첫 번째는 double이고 두 번째는 익명 형식입니다.
모든 종류의 캐스트를 시도했지만 작동하지 않았습니다.
더 간단하게하기 위해 where 절을 제거했으며 optionTypes는 enum입니다.
계산 된 값과 하위 쿼리 비교를 제거하면 정상적으로 작동합니다.
어떤 도움이 필요합니까? 익명 유형을 생성하지만, 단지 값을 선택하지 마십시오
(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'를 선택하기 만하면됩니다. –