Link blog.vitalyzhukov.ru

Блог переехал вот сюда: Blog.VitalyZhukov.ru

15 июл. 2011 г.

SharePoint 2010. Random ListItem

Что делаем
Получаем произвольный элемент из списка/библиотеки. Здесь варианта два.
Первый - получить коллекцию ID'шников элементов и выбрать из них произвольно. Второй поинтересней и основан на том, что элементы из списка можно получать не только по ID, но и по индексу.



Делаем
Для красоты напишем метод-расширитель для класса SPList, который будет выдавать произвольный элемент. Примерно вот так:


namespace SharePoint.ZhukPoint.Extensions
{
    public static class SPListExtensions
    {
        public static SPListItem RandomItem(this SPList list)
        {
            if (list.ItemCount == 1) return list.Items[0];
            var rnd = new Random(Environment.TickCount);
            var i = rnd.Next(0, list.ItemCount - 1);
            var item = list.Items[i];
            return item;
        }
    }
}

Код простой до безобразия и, я думаю, понятен без комментариев. Теперь остается использовать примерно вот так:

var list = web.Lists["Список такой-то"];
var item = list.RandomItem();

Пользуемся


2 комментария:

  1. да. и после этого смотрим на дикие тормоза.

    ОтветитьУдалить
  2. Согласен, этот код порождает выборку всех данных из списка, и только потом возвращает произвольный элемент. Но на небольших списках производительность проседать не будет.
    Это решение задумывалось для показа данных из небольших списков, вроде "Знаете ли вы, что", "Афоризмы" и т.д.

    ОтветитьУдалить