无法将类型“System.Collections.Generic.IList<Model.Leval>”隐式转换为“Model.Leval”。存在一个显式转换(是否缺少强制转换?)
这句代码:empInfo.Empleval = new HotelDAL.HotelLevalService().GetLevalByID(Convert.ToInt32(reader["Empleval"].ToString()));
Empleval是一个对象.
相关的HotelLevalService().GetLevalByID方法如下:
public IList<Leval> GetLevalByID(int levalId)
{
string strSql = "select * from Leval where LevalId = @LevalId";
SqlParameter[] param = {
new SqlParameter("@LevalId",levalId)
};
return this.Default(strSql, param);
}
private IList<Leval> Default(string strSql, SqlParameter[] param)
{
DataTable tb = DBHelper.GetDataTable(strSql, param);
IList<Leval> list = new List<Leval>();
foreach (DataRow row in tb.Rows)
{
Leval leval = new Leval();
leval.Levalid = Convert.ToInt32(row["LevalId"].ToString());
leval.Levalname = row["LevalName"].ToString();
list.Add(leval);
}
return list;
}
请各位高手帮我解决下.我是一名初学者
楼主,你要搞清一个问题,System.Collections.Generic.IList<Model.Leval>是一个集合,而Model.Leval是单个对象,一群东西能赋值给一个东西吗?
所以要么修改方法GetLevalByID让他只返回一个,
Code
或者:
empInfo.Empleval = new HotelDAL.HotelLevalService().GetLevalByID(Convert.ToInt32(reader["Empleval"].ToString()))[0];
楼上的不错!那你试试吧!
empInfo.Empleval = new HotelDAL.HotelLevalService().GetLevalByID(Convert.ToInt32(reader["Empleval"].ToString())).First();