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