select new这里是一个匿名类型,而返回的是 IEnumerator<GIS.CAO.Data.StudentScore>
所以不匹配,尝试换作 IEnumerator<Object>
另外提醒一下:通过LINQ to SQL或Entity Framework进行此类查询的时候,如果返回结果集后关闭了链接,那么结果集将不可使用。因为在这里结果集都是被惰性加载的,不使用就不会加载,所以如果希望查询即时生效并持久有效的话,应当返回结果集的ToList()形式,方法签名中的返回结果改为List<Object>。
————————————————————————————————————
我翻了一下我的代码,我通常的返回实体集合用IQueryable<>表示,这比IEnumerator<>更准确,所以你如果你说IEnumerator<Object>不行的话,那就试试改成IQueryable<Object>吧。
但是还是建议返回ToList()形式的List<Object>,一是上面说的比较有确定性,再者List集合操作起来也比较容易。
尽量不要把匿名对象当作函数的返回值,真要的话只能返回object类型了。
我一般会在构造一个实体类比如
Code
Code
public IList<StudentInfo> StudentScoreList()
{
return (from s in db.StudentScore
select new StudentInfo
{
Name= s.Student.Name,
Math= s.math,
English=s.english,
Chinse= s.chainse
}).ToList();
}
是我的话,就先返回StudentScore的list,然后在用到的地方在取那些东西出来。不过这样的话,好像数据传输比较繁。但是如果只用一次的话,还比较合算。如果用的比较多的话,建议还是新建一个class取操作比较好。