EF Core中如何通过Linq查询已关联促销的Customer列表
查询已分配促销活动的客户列表(EF Core + LINQ)
实体结构参考
EF Core生成的多对多关联实体通常包含双向导航属性,示例如下:
public class Customer { public int Id { get; set; } public string Name { get; set; } public string Address { get; set; } // 多对多关联导航属性 public ICollection<Promotion> Promotions { get; set; } } public class Promotion { public int Id { get; set; } public decimal Discount { get; set; } // 多对多关联导航属性 public ICollection<Customer> Customers { get; set; } }
LINQ查询实现
方式1:仅获取客户基础信息
通过Any()判断客户是否关联了至少一个促销活动,过滤出符合条件的客户:
var customersWithPromotions = _context.Customers .Where(c => c.Promotions.Any()) .ToList();
方式2:同时获取关联的促销活动
如果需要一并返回客户对应的促销详情,使用Include()加载关联的导航属性:
var customersWithPromotions = _context.Customers .Include(c => c.Promotions) .Where(c => c.Promotions.Any()) .ToList();
以上查询会自动生成对应SQL,精准过滤出已分配促销活动的客户(仅返回客户1、2,排除无促销的客户3)。
内容的提问来源于stack exchange,提问作者victor
相关产品推荐
相关产品推荐

