linq返回值的问题!
C# code
public List<STUDENT> GetList()
{
var q = from s in sdc.STUDENT
select new STUDENT{SSEX= s.SSEX,SNAME= s.SNAME,SNO=s.SNO};
return q.OrderBy(s=>s.SNO).ToList();
}
public List<STUDENT> GetList2()
{
return sdc.STUDENT.OrderByDescending(t => t.SNO).Select(s => new { SNO = s.SNO, SSEX = s.SSEX, SNAME = s.SNAME }).ToList();
}
为什么第一个就可以,第二个就报错?
无法将类型“System.Linq.IQueryable<AnonymousType#1>”隐式转换为“System.Collections.Generic.List<DAL.STUDENT>”。存在一个显式转换(是否缺少强制转换?)
什么原因啊?
------解决方案--------------------new { SNO = s.SNO, SSEX = s.SSEX, SNAME = s.SNAME }) 匿名类型
------解决方案--------------------系统不知道你new的是什么类型
new { SNO = s.SNO, SSEX = s.SSEX, SNAME = s.SNAME })
------解决方案--------------------return sdc.STUDENT.OrderByDescending(t => t.SNO).Select(s => new { SNO = s.SNO, SSEX = s.SSEX, SNAME = s.SNAME }).ToList();
}
是一个匿名类型的List,你把它当成List<STUDENT> 来Return,当然不对啦。
------解决方案--------------------
------解决方案--------------------return sdc.STUDENT.OrderByDescending(t => t.SNO).Select(s => new
STUDENT{ SNO = s.SNO, SSEX = s.SSEX, SNAME = s.SNAME }).ToList();
------解决方案--------------------或者return sdc.STUDENT.OrderByDescending(t => t.SNO).Select s).ToList();
------解决方案--------------------up