Привет, у меня есть метод, в котором я нахожу объект с linq
Item c = lineCollection.items
.Where(p => p.item
.GetType()
.GetProperty("Product_ID")
.GetValue(p.item) == product
.GetType()
.GetProperty("Product_ID")
.GetValue(product)
)
.FirstOrDefault()
Проблема в том, что значение p=>p.item.(...)
всегда равно 0, но если я вызываю это значение из представления, оно равно 1, и оно хорошо. В чем причина? Product_ID
объекта продукта верен, но я видел, что я даже не могу вызвать свойства p => p.item to
a List<PropertyInfo>
Вот еще код:
private CartLine lineCollection = new CartLine();
public void AddItem(Object product, int quantity)
{
Item c = lineCollection.items.Where(p => p.item.GetType().GetProperty("Product_ID").GetValue(p.item) == product.GetType().GetProperty("Product_ID").GetValue(product)).FirstOrDefault();
if(c == null)
{
lineCollection.items.Add(new Item { item = product, Quantity = quantity });
}
else
{
lineCollection.items
.Where(p => p.item.GetType().GetProperties().FirstOrDefault().GetValue(p.item) ==
product.GetType().GetProperties().FirstOrDefault().GetValue(product) && p.item.GetType() == product.GetType())
.FirstOrDefault().Quantity += quantity;
}
}
public CartLine Lines
{
get { return lineCollection; }
}
И код в поле зрения, где я могу найти свойство Product_ID
@model KomShop.Web.Models.CartViewModel
@foreach (var line in Model.Cart.Lines.items)
{
@line.item.GetType().GetProperty("Product_ID").GetValue(line.item)
}
Наконец, CartViewModel
public class CartViewModel
{
public Cart Cart { get; set; }
public string ReturnUrl { get; set; }
}