2013-05-06 21 views
1

我已經在我的C#代碼到我的數據庫調用,看起來像這樣:我怎麼能使用LINQ語句從我的數據庫恢復一定量的項目在C#

var filter = new PrioritizeSessionFilter() 
      .Add(DbTable.PrioritizeSession.Columns.IsArchived, Comp.Equals, false); 

var list = UnitOfWork.PrioritizeSessions.Query(filter); 

有沒有辦法我只能一次返回10個項目,而不是一次返回所有項目?有沒有我可以創建這樣做的過濾器?

+0

爲什麼不只是把你的結果集並從那裏抓到10? – Limey 2013-05-06 15:53:25

+0

@Limey如果結果集包含數百萬行,那可能會有問題。 :) – 2013-05-06 15:56:01

+0

https://code.google.com/p/morelinq/source/browse/MoreLinq/Batch.cs?r=f85495b139a19bce7df2be98ad88754ba8932a28 – I4V 2013-05-06 15:56:43

回答

7

您可以使用Take擴展方法:

// get 10 elements 
var myList = UnitOfWork.PrioritizeSessions.Query(filter).Take(10); 
+0

如果你正在多次旅行,就像你一次說「10個項目」一樣,可能還需要'Skip'語句。 _([Link](http://msdn.microsoft.com/en-us/library/bb386988(v = vs.100).aspx))_ – 2013-05-06 16:03:00

+0

Thanks @GrantWinney我應該在我的答案中提到它。所以這裏有一個小例子:Query()。Skip(10).Take(10)' – Zbigniew 2013-05-06 16:05:21

1

雖然walkhard是正確的,你通常應該使用通過取時,這樣,如果你需要一個不同的十個項目,你可以返回這些以及

跳過
var amyList = UnitOfWork.PrioritizeSessions.Query(filter).Skip(skip).Take(10).ToList(); 
相關問題