Я использую контроллер API, и мне нужно вернуть список, сгруппированный по типу продукта.Я запутался с использованием IEnumerable vs List.Группа просит IEnumerable.В настоящее время я получаю синтаксическую ошибку в следующей строке в методе контроллера.
missingProducts = missingProducts.GroupBy(a => a.ProductType);
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<System.Linq.IGrouping<string, Manager.WebUI.ViewModels.Allocations.MissingProductsViewModel>>' to 'System.Collections.Generic.List<Manager.WebUI.ViewModels.Allocations.MissingProductsViewModel>'. An explicit conversion exists (are you missing a cast?)
Должен ли я возвращать IEnumerable из метода в базе ApiController, а затем выполнять ToList () в методе контроллера или возвращать список из базы ApiController, а затем преобразовывать возвращаемый тип в IEnumerable из метода контроллера.
Модели
public class MISSING_PRODUCT
{
public int PRODUCT_ID { get; set; }
public string PRODUCT_NAME { get; set; }
public string PRODUCT_TYPE { get; set; }
}
public class MissingProductsViewModel
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public string ProductType { get; set; }
}
API База контроллера
public class ApiControllerBase : ApiController
{
public List<MISSING_PRODUCT> GetMissingProducts()
{
var missingProduct =
IoC.Resolve<IPackageService>()
.PackageGetList<FN_MISSING_PRODUCTS, MISSING_PRODUCT>(new FN_MISSING_PRODUCTS());
return missingProduct;
}
}
Метод контроллера
public class AllocationsController : ApiControllerBase
{
[HttpGet]
[Route("api/Allocations/{id}")]
public IHttpActionResult Details(int id, DateTime date)
{
var viewModel = GetAllocationsViewModel(id, date);
if (viewModel == null) return NotFound();
return Ok(viewModel);
}
private AllocationsViewModel GetAllocationsViewModel(int id, DateTime date)
{
var ms = GetStrategy(id);
DateTime d = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);
if (ms.FIRM_ID != null)
{
var missingProducts = Mapper.Map<List<MISSING_PRODUCT>, List<MissingProductsViewModel>>(GetMissingProducts());
missingProducts = missingProducts.GroupBy(a => a.ProductType);
var vm = new AllocationsViewModel
{
MissingProducts = missingProducts
};
return vm;
}
return null;
}
}