为什么 Skip 和 Take 在传递方法时不起作用?
假设以下代码:
IEnumerable<MyClass> MakeQuery()
{
var query = from m in session.Linq<MyClass>()
select m;
return query;
}
List<MyClass> m1()
{
return MakeQuery()
.Skip(10)
.Take(20)
.ToList<MyClass>();
}
List<MyClass> m2()
{
var query = from m in session.Linq<MyClass>()
select m;
return query
.Skip(10)
.Take(20)
.ToList<MyClass>();
}
假设所有查询都相同,似乎在 m1()
中,Skip
和 Take
不起作用。事实上,就像它们并不全部存在一样。
为什么会发生这种情况以及如何解决?
我正在使用 linq-to-nhibernate,此方法用于分页。谢谢。
Suppose following codes:
IEnumerable<MyClass> MakeQuery()
{
var query = from m in session.Linq<MyClass>()
select m;
return query;
}
List<MyClass> m1()
{
return MakeQuery()
.Skip(10)
.Take(20)
.ToList<MyClass>();
}
List<MyClass> m2()
{
var query = from m in session.Linq<MyClass>()
select m;
return query
.Skip(10)
.Take(20)
.ToList<MyClass>();
}
Supposing all queries are same, it seems that in m1()
, Skip
and Take
does not work. Indeed its like they do not exist all.
Why this happens and how can be fixed?
I'm using linq-to-nhibernate and this methods are used for paging. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不使用 IQueryable 作为 MakeQuery() 方法?
实际的查询并没有多大意义。但我会把它留给你。
但这也是 m1() 和 m2() 之间的唯一区别
Why not use IQueryable for the MakeQuery() method?
Not that the actual query makes a lot of sense. But I'll leave that to you.
But this is also the only difference between m1() and m2()