如何返回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>
:
public IEnumerable<GenderDTO> GetGenderList()
但您正试图返回GenderDTO
:
GenderDTO model = new GenderDTO();
//...
return model;
它们是两种不同的类型。如果您希望该方法返回一个对象,请更改该方法:
public GenderDTO GetGenderList()
另一方面,如果你想返回一个对象集合,那么改变你的返回类型:
return new List<GenderDTO> { model };
您很可能想要第一个选项。总是只返回一个对象的集合是有点愚蠢的。不过,公平地说,目前还不清楚这个GenderDTO
模型应该代表什么。您永远不会设置ID
或Description
属性。
您使用的是return model;
,它表示GenderDTO
类型的单个对象。从问题描述来看,您必须返回单个对象,而不是集合。修改您的方法签名并从返回类型中删除IEnumerable
。
但是,如果你必须返回一个IEnumerable<GenderDTO>
,那么你必须在你的代码中创建它,并像一样返回它
类似于:
return gender.Select(r => new GenderDTO
{
ID = r.ID,
Description = r.DESCRIPTION,
GenderList = new SelectList(gender, "ID", "Description")
};