首页 新闻 会员 周边

LIQN 查询当中一个方法的返回类型

0
悬赏园豆:15 [已关闭问题]

 

Code
public IEnumerator<GIS.CAO.Data.StudentScore> StudentScoreList()
{
var list
= from s in db.StudentScore
select
new
{
s.Student.Name,
s.math,
s.english,
s.chainse
};
return list;

}

上面的代码怎么报一错,说返回的类型不对,

在这里我不想构造一个新的对象,

请问大家这里应该返回一个什么类型,谢谢 

阳光追梦的主页 阳光追梦 | 初学一级 | 园豆:150
提问于:2009-06-21 16:59
< >
分享
其他回答(3)
0
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集合操作起来也比较容易。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-06-21 17:29
0

尽量不要把匿名对象当作函数的返回值,真要的话只能返回object类型了。

Azuresong | 园豆:3565 (老鸟四级) | 2009-06-21 19:32
0

我一般会在构造一个实体类比如

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();
}
MicroCoder | 园豆:554 (小虾三级) | 2009-06-22 11:45
0

是我的话,就先返回StudentScore的list,然后在用到的地方在取那些东西出来。不过这样的话,好像数据传输比较繁。但是如果只用一次的话,还比较合算。如果用的比较多的话,建议还是新建一个class取操作比较好。

天堂口 | 园豆:514 (小虾三级) | 2009-06-22 14:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册