C# C“无法隐式转换类型”相同的模型属性
我正在尝试在MVC.NETVisualStudio中使用ViewModel。我有一个充满数据的模式。它是这样建立起来的:C# C“无法隐式转换类型”相同的模型属性,c#,.net,linq,model-view-controller,C#,.net,Linq,Model View Controller,我正在尝试在MVC.NETVisualStudio中使用ViewModel。我有一个充满数据的模式。它是这样建立起来的: public class Offer { public List<ProjectleaderModel> Projectleaders { get; set; } = new List<ProjectleaderModel>(); public List<OfferManagerModel> OfferManagers {
public class Offer
{
public List<ProjectleaderModel> Projectleaders { get; set; } = new List<ProjectleaderModel>();
public List<OfferManagerModel> OfferManagers { get; set; } = new List<OfferManagerModel>();
public List<ProductModel> Products { get; set; } = new List<ProductModel>();
public List<PersonModel> People { get; set; } = new List<PersonModel>();
public string Administration { get; set; }
public string Status { get; set; }
public DateTime Applicationdate { get; set; }
public DateTime Submitdate { get; set; }
public Boolean CustomerAgreementBoolean { get; set; }
public DateTime CustomerAgreementBooleanDate { get; set; }
}
public class ProjectleaderModel
{
public int Id;
public string Name;
}
在我的viewmodel中,我试图将数据放入一个单独的列表中,我想将其变成一个下拉菜单:
public List<Offer> Offermodel = new List<Offer>();
public List<ProjectleaderModel> Projectleaders
{
get
{
return Offermodel.Select(x => x.Projectleaders).ToList();
}
}
如您所见,Projectleadermodel类位于模型中。
为什么我会出错:
无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”Offermodel.Selectx=>x行。Projectleaders将为您提供一个Offer类对象的集合,然后您将为其创建一个列表
但是Projectleaders属性的返回类型是List
所以他们不是对手
您需要创建要从该属性返回的Projectleaders对象列表
基本上:
return Offermodel.SelectMany(x => x.Projectleaders).ToList();
如果您希望所有产品中的所有项目负责人,请使用SelectMany 请注意,Offer.Projectleaders属于List类型,因此您的选择将生成IEnumerable而不是所需的IEnumerable。Linq在这方面有一个解决办法,就是 鉴于您的项目负责人可以阅读
您正在尝试获取项目负责人的列表,但项目负责人已经是一个列表对象,所以您正在获取一个列表列表。很抱歉我的编辑。我不小心弄坏了问题格式。现在我把它恢复到原来的版本没问题!不过,谢谢你的帮助!真不敢相信,我的头撞到这上面这么久,而答案只有4个字母。谢谢你不是第一个回答的,但我喜欢你给了一个恰当的解释。
return Offermodel.SelectMany(x => x.Projectleaders).ToList();
public List<ProjectleaderModel> Projectleaders =>
Offermodel.SelectMany(x => x.Projectleaders).ToList();
public List<Offer> Offermodel = new List<Offer>();
public List<List<ProjectleaderModel>> Projectleaders
{
get
{
return Offermodel.Select(x => x.Projectleaders).ToList();
}
}