假設如下代碼:爲什麼跳過並採取通過一種方法時不起作用?
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,並且此方法用於分頁。謝謝。
對不起ChrisF,我錯過了一些代碼之間的唯一區別,但它完成。 – 2010-10-16 17:54:21
您是否在兩種情況下都檢查過查詢是否返回相同的數據?我知道它應該(來自你發佈的代碼),但是檢查這些東西以消除它可能是一個可能的原因。 – ChrisF 2010-10-16 17:55:21
@ChrisF,你爲什麼認爲他們有不同的結果?它們在'MakeQuery()'和'm2'中都是相同的查詢。我從同一位置複製粘貼它們。 – 2010-10-16 18:31:27