У меня есть 2 списка.Список корзины покупок, который содержит объекты со свойствами;Quantity
и ProductId
.Затем я получаю все продукты из репозитория (IQueryable
), в списке которого есть ProductId
.Это означает, что для каждого продукта есть объект корзины покупок с Quantity
, связанным с ним.
При выполнении выбора я хочу назначить также Quantity
, но единственный известный мне способсделать это, чтобы запросить корзину еще раз.
Для egx.
model = (from p in productService.GetAllProducts()
where cart.Entries.Select(c => c.ProductId).Contains(p.ProductId)
select new CartViewItem
{
Price = p.Price,
ProductId = p.ProductId,
ProductName = p.ProductName,
Quantity = cart.Entries.FirstOrDefault(c => c.ProductId == p.ProductId).Quantity
}).ToList();
Модель:
public class ShoppingCartEntry
{
public int ProductId { get; set; }
public int Quantity { get; set; }
}
cart.Entries
не поступает из хранилища.productService.GetAllProducts()
возвращает IQueryable объектной рамки.
РЕДАКТИРОВАТЬ : Мой новый код:
model= (from p in productService.GetAllProducts()
from c in cart.Entries
where c.ProductId == p.ProductId
select new CartViewItem
{
Price = p.Price,
ProductId = p.ProductId,
ProductName = p.ProductName,
Quantity = c.Quantity
}).ToList();
Это приводит к ошибке: Unable to create a constant value of type 'SampleApp.WebUI.Models.ShoppingCartEntry'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.