I need to get items from a big bucket.
For best performance you should get the items through Sitecore ContentSearch.
Here I have some example code how to get a selection of items from a bucket.
Let’s say I want to get items that has a specific Tag on a field, which in this case is a string type field. (You can of course change the queryable to whatever you like)
List<Item> ResultsItems = new List<Item>();
IIndexable index = new SitecoreIndexableItem(bucketItem);
using (var context = ContentSearchManager.GetIndex(index).CreateSearchContext())
{
var results =
context.GetQueryable<T>().Where(x => x.TagFieldName.Equals("TagName"))).GetResults();
foreach (var result in results)
{
Item item = result.Document.GetItem();
if(item !=null)
{
ResultsItems.Add(item);
}
}
}
Now ResultsItems are filled with the item context of all the children of the bucket.
Note: I’m showing the code for demonstration purpose. Beware of potentially calling a GetItem() on potential thousands of items.
I would also recommend selecting the fields you are after with .Select(i => new { i.FieldA, i.FieldB}) (read more here) so that the query gets smaller.