首页 > 解决方案 > 使用 EF Core 进行条件选择

问题描述

我正在尝试使用 EF Core 进行条件选择,但我认为我对如何执行此操作有点困惑。我的 MySql 架构中有两个表:ProductsOffers. 我想选择所有产品并与优惠合并,用您当前的促销价值覆盖产品。我尝试使用include,join和各种东西,但我认为问题出在我的逻辑上。这是我当前的 EF 核心选择,没有与优惠“合并”。

List<ProductViewModel> viewModel = await _context.product
  .Where(p => p.establishment_id == EstablishmentId)
  .Select(p => new ProductViewModel()
  {
    Id = p.id,
    Name = p.name,
    Description = p.description,
    Rating = p.rating,
    Price = p.price,
    Photos = p.product_photo
     .Where(pho => pho.product_id == p.id)
     .Select(pho => new ProductPhotoViewModel()
     {
       Path = pho.path
     }).ToList(),
     Category = _context.category
     .Join(_context.product_has_category, c => c.id, phc => phc.category_id, (c, phc) => new {c, phc})
     .Where(c => c.phc.product_id == p.id)
     .Select(c => new CategoryViewModel()
     {
       Id = c.phc.category.id,
       Name = c.phc.category.name
     }).SingleOrDefault()
  }).ToListAsync();

所有的帮助都是有用的!非常感谢!

标签: c#asp.net-coreef-core-2.1

解决方案


使用三元条件运算符?:和不等于条件!=向您的选择语句添加条件。

.Select(p => new ProductViewModel()
{
    Id = p.id,
    Name = p.name,
    Description = p.description,
    Rating = p.rating,
    Price = p.offer != null ? p.offer.sale_price : p.price
});

推荐阅读