gpt4 book ai didi

c# - 无法将类型 List<> 隐式转换为 IEnumerable

转载 作者:行者123 更新时间:2023-11-30 22:55:34 24 4
gpt4 key购买 nike

我正在尝试执行 linq 查询 Join 但出现异常。

这是我的方法:

public async Task<IEnumerable<Product>> TestProducts()
{
var items = await _context.Products.Join(_context.ProductTypes,
p => p.ProductId,
c => c.ProductTypeId,
(p, c) => new
{
productId = p.ProductId,
number = p.Number,
amount = p.Amount,
primeCostEUR = p.PrimeCostEUR,
nameType = c.NameType

}).ToListAsync();
return items;
}

这是我的模型:

public class Product //: BaseObject
{
public long ProductId { get; set; }
public string Number { get; set; }
public double Amount { get; set; }
public double PrimeCostEUR { get; set; }

public long ProductTypeId { get; set; }
public ProductType ProductType { get; set; }

public long ProductParameterId { get; set; }
public ICollection<ProductParameter> ProductParameters { get; set; } =
new List<ProductParameter>();
}

public class ProductType //: BaseObject
{
public long ProductTypeId { get; set; }

public string NameType { get; set; }

public ICollection<Product> Products { get; set; }
public ICollection<Parameter> Parameters { get; set; }

}

这是我遇到的错误:

Error CS0266 Cannot implicitly convert type 'System.Collections.Generic.List<>' to 'System.Collections.Generic.IEnumerable<.Models.Product>'.

最佳答案

您的预期返回输出似乎是 Product 的组合和 ProductType模型类。因此,创建一个如下所示的 DTO(数据传输对象)类,它将包含输出查询的所有字段。

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; }
}

现在按如下方式编写您的 Controller 方法,方法的返回类型为 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 投影实现与我所做的相同的事情,而且更加简单。

关于c# - 无法将类型 List<<anonymous type : . .>> 隐式转换为 IEnumerable<Product>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55190745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com