2015-11-13 48 views
-2

我想填充dropdownlistfor形式的数据库,但这个错误是发生...有人可以帮助我消除这种误差如何返回IEnumerable的<GenderDTO> GetGenderList()

无法隐式转换类型“ORS。 DTO.GenderDTO'改为'System.Collections.Generic.IEnumerable'。一个显式转换存在(是否缺少强制转换?)

我有下拉列表填充性别和必须让那些在数据库中存储的值...

public IEnumerable<GenderDTO> GetGenderList() 
    {    
     GenderDTO model = new GenderDTO(); 
     var gender = from g in db.CAT_GENDER 
        select g; 
     model.GenderList = new SelectList(gender, "ID", "Description"); 
     return model; 
    } 

GenderDTO类

public class GenderDTO 
{ 
    public int ID { get; set; } 
    public string Description { get; set; } 

    public SelectList GenderList { get; set; } 
} 

CAT_GENDER

public partial class CAT_GENDER 
{ 
    public CAT_GENDER() 
    { 
     USER_PROFILE = new HashSet<USER_PROFILE>(); 
    } 

    public int ID { get; set; } 

    [Required] 
    [StringLength(50)] 
    public string DESCRIPTION { get; set; } 

    public int STATUS_ID { get; set; } 

    public virtual CAT_RECORD_STATUS CAT_RECORD_STATUS { get; set; } 

    public virtual ICollection<USER_PROFILE> USER_PROFILE { get; set; } 
} 

回答

1

呦乌尔方法返回一个IEnumerable<GenderDTO>

public IEnumerable<GenderDTO> GetGenderList() 

但你要返回GenderDTO

GenderDTO model = new GenderDTO(); 
//... 
return model; 

他们是两种不同的类型。如果你想在方法返回一个对象,改变方法,这样做:

public GenderDTO GetGenderList() 

如果,另一方面,要返回对象的集合,然后改变你的返回类型做到这一点:

return new List<GenderDTO> { model }; 

这是极有可能要第一个选项。总是返回恰好一个对象的集合将是一件愚蠢的事情。虽然,公平地说,不知道这个GenderDTO模型应该代表什么。您从不设置IDDescription属性。

0

您正在使用return model;代表GenderDTO类型的一个对象,它看起来像从问题的描述,你必须返回一个对象,而不是一个集合。修改您的方法签名并从返回类型中删除IEnumerable

但是,如果你要返回IEnumerable<GenderDTO>,那么你必须创建在你的代码,并返回它想:

喜欢的东西:

return gender.Select(r => new GenderDTO 
{ 
    ID = r.ID, 
    Description = r.DESCRIPTION, 
    GenderList = new SelectList(gender, "ID", "Description") 
}; 
相关问题