c# - 使用 EF Core 进行条件选择
问题描述
我正在尝试使用 EF Core 进行条件选择,但我认为我对如何执行此操作有点困惑。我的 MySql 架构中有两个表:Products
和Offers
. 我想选择所有产品并与优惠合并,用您当前的促销价值覆盖产品。我尝试使用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();
所有的帮助都是有用的!非常感谢!
解决方案
使用三元条件运算符?:
和不等于条件!=
向您的选择语句添加条件。
.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
});
推荐阅读
- c# - Estimote 信标和 Xamarin 表单
- vba - 在vba中将值设置为过滤的excel范围
- javascript - Ag-Grid 在新数据源上重置滚动
- excel - SAS - 用百分比格式化 proc 报告总计
- javascript - 如果存在成对的大括号,则只允许特定的字符串正则表达式
- javascript - JS 命令禁止字母,只允许数字(光盘机器人)
- css - 将边框底部应用于引导程序 4 中的活动项目后,导航项目未在同一行中对齐
- javascript - 如何避免打字稿出现空白
- javascript - 自定义计数器 VueJS
- python - 通过函数参数访问 Python 预定义的数组名称