Похоже, что ваш ожидаемый выходной результат является комбинацией класса моделей Product
и ProductType
.Поэтому создайте класс DTO (Data Transfer Object) следующим образом, который будет содержать все поля вашего выходного запроса.
public class ProductDto
{
public long ProductId { get; set; }
public string Number { get; set; }
public double Amount { get; set; }
public double PrimeCostEUR { get; set; }
public string ProductTypeName { get; set; }
}
Теперь напишите ваш метод контроллера следующим образом, где тип возвращаемого метода - IEnumerable<ProductDto>
:
public async Task<IEnumerable<ProductDto>> TestProducts()
{
var items = await _context.Products.Select(p => new ProductDto
{
ProductId= p.ProductId,
Number= p.Number,
Amount= p.Amount,
PrimeCostEUR= p.PrimeCostEUR,
ProductTypeName = p.ProductType.NameType
}).ToListAsync();
return items;
}
Более того, вам не нужно явное соединение LINQ, как вы это сделали, вы можете добиться того же с помощью проекции EF, как я сделал с большей простотой.