2013-05-06 4 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

+0

@Limey Это может быть проблематично, если набор результатов содержит миллионы строк. :) –

+0

https://code.google.com/p/morelinq/source/browse/MoreLinq/Batch.cs?r=f85495b139a19bce7df2be98ad88754ba8932a28 – I4V

ответ

7

Вы можете использовать Take метод расширения:

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

Может потребоваться также и оператор 'Skip', если вы делаете несколько поездок, чтобы получить, как вы говорите« 10 предметов за раз ». _ ([Ссылка] (http://msdn.microsoft.com/en-us/library/bb386988 (v = vs.100) .aspx)) _ –

+0

Спасибо @GrantWinney Я должен был упомянуть об этом в своем ответе. Итак, вот небольшой пример: 'Query(). Skip (10) .Take (10)' – Zbigniew

1

Хотя walkhard правильно, вам следует использовать пропустить при использовании тейк, так что если вам нужны различные десять пунктов, вы можете вернуть эти, а также

var amyList = UnitOfWork.PrioritizeSessions.Query(filter).Skip(skip).Take(10).ToList(); 
Смежные вопросы