1
私は、decimal型のProductPriceプロパティを含むモデルクラスを持っています。私はプロパティの小数点にIQueryable型を格納することができません。私もConvert.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'に格納できるようにするには? 1つはクエリを記述し、1つは実際の値を記述する。クエリの最後に '.FirstOrDefault()'を追加したいと思うかもしれませんが、それはあなたのビジネスロジックに完全に依存しています。 –
Rob
FirstOrDefaultの代わりに。 –
_context.Product.Where(p => p.ProductId == item.i.ProductId).Select(p => p.ProductPrice);これは複数のレコードを返す可能性があり、モデルCartDisplayにはコレクションではなくProductPriceしかないため、このエラーが発生する可能性があります。返されたコレクションの最初の値を与えるFirstOrDefault()を使用できます。モデル構造を変更することもできます。 –