SharePoint: проверьте, существует ли элемент в списке, минимальные накладные расходы - PullRequest
5 голосов
/ 27 августа 2009

Как я могу проверить, содержит ли список элемент ... на самом деле интересует только проверка 1 поля, а не каждого поля в списке.

Как это можно сделать наиболее эффективным способом, создавая SPListItemCollection и проводя через него итерирование для проверки уникальных значений, действительно выровняйте использование процессора ... Конечно, должен быть способ сделать это, не проходя через все пункт в списке?

1 Ответ

11 голосов
/ 27 августа 2009

Вот хорошее сравнение техник от Вальдека Мастыкарза.

Общее правило - использовать SPQuery. См. SharePointDevWiki для получения более подробной информации. Вот базовый пример:

SPList list = SPContext.Current.Web.Lists["Some List"];
SPQuery query = new SPQuery();
query.Query = @"
    <Where>
        <Eq>
            <FieldRef Name='SomeField' />
            <Value Type='Text'>Value To Match</Value>
        </Eq>
    </Where>";
SPListItemCollection found = list.GetItems(query);
if (found.Count > 0)
{
    // Do something
}

Несколько замечаний о SPQuery:

  • Если ваш запрос неверен, он может вернуть все ответы вместо того, чтобы выдавать ошибку
  • Если ваш запрос неверен, он может иногда давать бесполезную / вводящую в заблуждение ошибку
  • Убедитесь, что вы правильно указали тип значения

Избавьте себя от лишних хлопот, используя такой инструмент, как U2U CAML Builder (версии Windows или Web - Web лучше IMHO) или Stramit CAML Viewer построить и проверить ваши запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...