如何返回IEnumerable <genderdto> GetGenderList()

时间:2015-11-13 16:04:28

标签: c# asp.net-mvc linq

我想填充表单数据库的dropdownlist但是出现此错误...有人可以帮我解决此错误

  

无法隐式转换类型&#39; ORS.DTO.GenderDTO&#39;到&#39; System.Collections.Generic.IEnumerable&#39;。存在显式转换(您是否错过了演员?)

我必须填充性别的dropdownlist,并且必须获取存储在数据库中的值...

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

2 个答案:

答案 0 :(得分:1)

您的方法返回IEnumerable<GenderDTO>

public IEnumerable<GenderDTO> GetGenderList()

但您尝试返回GenderDTO

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

他们有两种不同的类型。如果希望方法返回一个对象,请更改方法:

public GenderDTO GetGenderList()

另一方面,如果要返回一组对象,请更改返回类型:

return new List<GenderDTO> { model };

很可能您想要第一个选项。总是返回一个对象的集合会有点愚蠢。虽然,公平地说,但这并不是很清楚这个GenderDTO模型应该代表什么。您永远不会设置IDDescription属性。

答案 1 :(得分: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")
};