Есть ли способ определить, соответствует ли один элемент списка SharePoint SPQuery/SPView?

Стандартная функция оповещения в SharePoint позволяет отправлять оповещения только в том случае, если элемент отображается в указанном представлении.

Я хочу применить аналогичную логику в настраиваемом рабочем процессе (C#).

С учетом SPListItem и SPView/SPQuery кто-нибудь знает, существует ли эффективный * способ узнать, попадает ли элемент в это представление или соответствует запросу?

* эффективное значение, а не просто выполнение запроса, а затем циклический поиск элемента

2 ответа

Решение

У меня была идея, однако, если я адаптирую идею, обсуждаемую в ответе на этот вопрос, Как запросить объект SPView.

Если я изменю запрос для выполнения всех фильтров из представления, но также добавлю предложение, в котором ID равен идентификатору моего элемента, я либо получу 1 результат назад, либо 0, тогда я могу просто проверить счетчик.

С точки зрения производительности, я не уверен, что более эффективно между предложением Матье и этой идеей?

Я буду расследовать завтра...

ОБНОВЛЕНИЕ Моя техника была эффективной. Я хотел бы думать (с точки зрения дизайна), что проверка идентификатора, происходящая на стороне БД, а не посредством запроса XML, будет более эффективной.

Спасибо всем за предложение Матье.

Я не сталкивался с таким методом в SPListItem, SPQuery, ... который имеет такую ​​функциональность. Проверка, находится ли текущий элемент в возвращенной коллекции, не кажется такой плохой идеей. Но вместо того, чтобы перебирать все элементы, я бы использовал запрос LINQ, чтобы помочь вам. Что-то вроде этого:

itemCollection.Cast<SPListItem>().Any(i => i.ID.Equals(yourItem.ID));

Где "itemCollection" - это коллекция элементов, полученных из запроса или представления. "yourItem" - это элемент, который вы хотите проверить, находится ли он в коллекции.

Другие вопросы по тегам