无法隐式将类型线程.任务<集合.通用.列表<Model>>转换为模型



我想从.NET API获取数据,并将其包含在引用中。但是,我被一个例外的吼叫卡住了。

错误2无法将类型System.Threading.Tasks.Task<System.Collections.Generic.List<BizCover.Repository.Cars.Car>>隐式转换为BizCover.Api.Cars.Model.CarsVM

这是我在API控制器中的代码。

public IHttpActionResult getAllDataCars()
{
CarRepository carRep = new CarRepository();
IHttpActionResult result = null;
try
{
CarsVM dataAPICars = new CarsVM(); 
dataAPICars = carRep.GetAllCars(); //here's the error return.
if (dataAPICars != null) 
{
var a = "ada";
}
else
{
var b = "null";
}
}
catch (Exception ex)
{
var c = ex.ToString();
}
return result;
}

这也是我的型号

public class CarsVM
{
public CarsVM()
{
}
public string Colour { get; set; }
public string CountryManufactured { get; set; }
public int Id { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public decimal Price { get; set; }
public int Year { get; set; }
public CarsVM(string Colour, string CountryManufactured, int Id, string Make, string Model, decimal Price, int Year)
{
this.Colour = Colour;
this.CountryManufactured = CountryManufactured;
this.Id = Id;
this.Make = Make;
this.Model = Model;
this.Price = Price;
this.Year = Year;
}
}

这里的目标是我想从引用(CarRepository(中获取数据,并将其存储在我的模型中。我不清楚.NET框架API应该如何一步一步地工作,以及如何实现等待异步。

首先,要修复Task问题,您需要等待它,因此您的方法签名需要更改为async方法:

public async Task<IHttpActionResult> getAllDataCars()

别担心,它仍然会按预期工作。ASP.NET知道这是什么。

然后你可以await你正在调用的异步方法:

dataAPICars = await carRep.GetAllCars();

现在,这将稍微改变你名义上的问题,但它仍然会产生本质上相同的问题:

Cannot implicity convert type Collection.Generic.List<Model> to Model

这里的问题是,你在一个列表中可能有很多辆车,而你想要一辆车。显然,我们无法将一个装满汽车的停车场转换为一辆汽车,因此C#无法将一系列汽车转换为一部汽车。

假设只能有一个条目,则可以使用SingleOrDefault:

dataAPICars = (await carRep.GetAllCars()).SingleOrDefault();

如果可以有多个,但您只想要第一个/最后一个,则应使用.FirstOrDefault().LastOrDefault():

dataAPICars = (await carRep.GetAllCars()).FirstOrDefault();

如果您确实想要一个CARS列表,那么您需要将dataAPICars更改为List<Model> dataAPICars,而不是Model dataAPICars。然后,您可以返回该列表而不是单个项目,当然还可以将检查从dataAPICars != null更改为dataAPICars.Any(),等等。

如果你想要其他东西,恐怕你必须弄清楚你的汽车清单是如何变成一辆车的。

相关内容

  • 没有找到相关文章

最新更新