У меня есть класс модели, который содержит свойство ProductPrice типа decimal. Я не могу хранить тип IQueryable для десятичного значения. Я даже пытался преобразовать. ToDecimal, но он все еще показывает мне ошибку.IQueryable <decimal> to decimal
Модель - продукт
public class Product
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ProductId { get; set; }
public string ProductName { get; set; }
public decimal ProductPrice { get; set; }
public int ProductQty { get; set; }
}
Модель CartDispay
public class CartDisplay
{
public int ItemId { get; set; }
public String ProductName { get; set; }
public int ProductQty { get; set; }
public decimal ProductPrice { get; set; }
}
Контроллер
public ActionResult Index()
{
int userId = 3;
var items = _context.Cart.Join(_context.Items, c => c.CartId, i => i.CartId, (c, i) => new { c, i }).Where(c => c.c.UserId == userId).ToList();
foreach(var item in items)
{
CartDisplay display = new CartDisplay();
display.ItemId = item.i.ItemId;
display.ProductName = _context.Product.Where(p => p.ProductId == item.i.ProductId).Select(p => p.ProductName).ToString();
display.ProductPrice = _context.Product.Where(p => p.ProductId == item.i.ProductId).Select(p => p.ProductPrice); ;
display.ProductQty = item.i.ProductQty;
cartView.CartDisplay.Add(display);
}
retu
Почему вы ожидаете чтобы иметь возможность хранить 'IQueryable' в 'decimal'? Один описывает запрос, который описывает фактическое значение. Возможно, вам нужно добавить '.FirstOrDefault()' в конце вашего запроса, но это полностью зависит от вашей бизнес-логики. –
Rob
FirstOrDefault вместо Where .. –
_context.Product.Where (p => p.ProductId == item.i.ProductId) .Выберите (p => p.ProductPrice); это может вернуть несколько записей, и поскольку ваша модель CartDisplay имеет только ProductPrice (а не сбор), вы можете получить эту ошибку. Вы можете использовать FirstOrDefault(), который дает первое значение из возвращенной коллекции. или вы можете изменить свою модельную структуру. –