Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“无法隐式转换类型”相同的模型属性_C#_.net_Linq_Model View Controller - Fatal编程技术网

C# C“无法隐式转换类型”相同的模型属性

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 {

我正在尝试在MVC.NETVisualStudio中使用ViewModel。我有一个充满数据的模式。它是这样建立起来的:

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