1
我有一個模型類,其中包含一個屬性ProductPrice類型的十進制。我無法將IQueryable類型存儲到屬性小數。我甚至試圖Convert.ToDecimal,但它仍然顯示我的錯誤。IQueryable <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).Select(p => p.ProductPrice);這可能會返回多個記錄,並且由於您的模型CartDisplay只有ProductPrice(不是集合),所以您可能會收到此錯誤。您可以使用FirstOrDefault()從返回的集合中獲得第一個值。或者你可以改變你的模型結構。 –