2015-11-13 84 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") 
}; 
相關問題