public async IAsyncEnumerable <ItemDTO> GetAllWithSubTypeAsync() { /* * var itemWithPropAndSubItems = await _context.Item.Join( * _context.ItemSubItem, * item => item.Id, * itemSubItem => itemSubItem.Item.Id, * (item, itemSubItem) => new * { * SubItemId = itemSubItem.SubItemId, * ItemId = item.Id, * ItemDeletedDate = item.DeletedDate, * * } * ).ToListAsync(); */ List <Data.Entities.Item> itemList = await _context.Item.ToListAsync(); foreach (var item in itemList) { if (item.DeletedDate is null) { IAsyncEnumerable <PropertyDTO> propertyDTOList = _propertyService.GetByItemAsync(item.Id); IAsyncEnumerable <ItemSubItemDTO> itemSubItemlist = _itemSubItemService.GetSubItemByItemAsync(item.Id); List <SubItemDTO> subItemDTOList = new List <SubItemDTO>(); await foreach (var itemSubItem in itemSubItemlist) { IAsyncEnumerable <SubItemDTO> subItem = _subItemService.GetByIdAsync(itemSubItem.SubItemId); await foreach (var tempItemSubItem in subItem) { subItemDTOList.Add(tempItemSubItem); } } IAsyncEnumerable <ItemDTO> itemDTO = CloneItemWithSubItem(item, propertyDTOList, subItemDTOList); await foreach (var tempitem in itemDTO) { yield return(tempitem); } } } }
public ActionResult <IAsyncEnumerable <ItemSubItemDTO> > GetSubItemByItem(Guid itemId) { IAsyncEnumerable <ItemSubItemDTO> list = _itemSubItemService.GetSubItemByItemAsync(itemId); return(Ok(list)); }