2011-02-22 53 views
0

我試圖使用SubSonic 3.0過濾GetPaged()結果,但我一直未能找到方法。
我已經嘗試使用以下:如何使用ActiveRecord在SubSonic 3.0中過濾GetPaged

var list = Class.Find(filter); 
var paged = new SubSonic.Schema.PagedList<Class>(list, 1, 10); 

這似乎並沒有工作,我得到一個不能轉換錯誤,這將違背的原因尋呼,因爲我會拉數據庫中的完整列表。

如果有人有一種方法來檢索使用SubSonic 3.0過濾分頁列表,將不勝感激!

在此先感謝。

回答

1

在一個問題關於subsoinc如果你正在使用ActiveRecord,LinqTemplates或SimpleRepository你應該總是說,這使得它更容易找到合適的例子

建議您使用ActiveRecord的,你可以使用LINQ的方法:

int page = 0; 
int pageSize = 10; 

var query = from c in Class.All() 
      orderby c.Name 
      select c; 

var totalPages = (int)(query.Count()/pageSize) + 1; 

var paged = query.Skip(page*pageSize).Take(pageSize); 

foreach(var item in paged) 
    Console.WriteLine(item.Name); 

或與QueryTool:

var db = new YourDB(); 
var result = db.Select.From<Class>() 
       .Paged(page, pageSize) 
       .ExecuteTypedList<Class>(); 
+0

這種運作良好,但它不會讓我得到一個像TOTALCOUNT使用GetPaged確實。有什麼建議麼? – Shawn 2011-02-23 15:00:22

+0

我添加了一個例子。請記住,linq查詢是一個表達式,根本不會觸發數據庫。如果你調用方法Count(),亞音速運行一個「SELECT COUNT」查詢。 'var paged = ...'這一行創建了一個新的IQuerable,並添加了一些約束。你可以做的也是這樣'var single = paged.Single(x => x.id == 1);' – 2011-02-24 10:06:53