如何返回IEnumerable<;GenderDTO>;GetGenderList()

本文关键字:gt GetGenderList lt GenderDTO IEnumerable 何返回 返回 | 更新日期: 2023-09-27 18:21:53

我想填充表单数据库的dropdownloadlist,但出现了这个错误。。。有人能帮我删除这个错误吗

无法将类型"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; }
}

如何返回IEnumerable<;GenderDTO>;GetGenderList()

您的方法返回一个IEnumerable<GenderDTO>:

public IEnumerable<GenderDTO> GetGenderList()

但您正试图返回GenderDTO:

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

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

public GenderDTO GetGenderList()

另一方面,如果你想返回一个对象集合,那么改变你的返回类型:

return new List<GenderDTO> { model };

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

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

但是,如果你必须返回一个IEnumerable<GenderDTO>,那么你必须在你的代码中创建它,并像一样返回它

类似于:

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