先调用订单服务得到订单列表后,再根据订单列表的用户ID集合调一次用户服务查询出用户列表。再通过内存遍历把订单列表与用户列表在业务层整合。
优点,实现简单;缺点,也是简单,该方案只能适合简单的查询过滤,以主表为驱动的关联。
public async Task<List<Order>> GetOrder() { //订单集合 var orderList = await _order.GetList(); //userId集合 var userIds = orderList.Select(a => a.UserId).ToList(); //关联用户集合 var users = await _user.GetByIds(userIds); //应用层数据聚合关联 orderList.ForEach(order => { order.Name = users.FirstOrDefault(a => a.UserId == order.UserId)?.Name; }); return orderList; }