2015-07-28 5 views
0

У меня проблемы с CAML Query и GetItems метод от SPList.GetItems чувствительный к регистру от SPList (SharePoint)

Я получаю SPList от веб-контекста:

SPList docTypeList = _web.GetList(string.Format("{0}{1}", web.ServerRelativeUrl,           "DocumentType")); 

Список содержит несколько значений.

Я хочу найти в нем только значение, которое имеет поле DocumentType со значением «MyValue1». (Чувствительно к регистру)

Я использую CAML запроса:

var queryBuilder = new CAMLQueryBuilder(); 
      queryBuilder.AddComparison("DocumentType", CAMLQueryBuilder.COMPARISON_TYPE.Eq, "MyValue1"); 

var query = new SPQuery { Query = queryBuilder.GenerateCAML() }; 
SPListItemCollection queryResultItems = docTypeList.GetItems(query); 

В этом случае она возвращает как результат записи, который имеет поле «DocumentType», имеющее значение «myvalue1», это не заботится о строковой чувствительности.

Есть ли возможность получить предметы с учетом чувствительных случаев?

Спасибо за предложения!

ответ

0

я нашел на sharepoint.stackexchange.com ответ:

все это чувствительно к регистру, после получения результатов, необходимо перебрать и сделать чувствительность к регистру проверки.

Edit:
Поскольку CAML запросов является нечувствительным к регистру.

Раствор для фильтрации результатов от

SPListItemCollection queryResultItems = docTypeList.GetItems(query); 

и проверьте, чувствительны к регистру.

Я создал небольшой метод, который делает это.

private SPListItem FindCaseSensitive(string documentType, IEnumerable items) 
{ 
    SPListItem foundItem = null; 
    if (items == null) return null; 

    foreach (var item in items) 
    { 
     var spItem = item as SPListItem; 
     if (spItem == null) continue; 

     var propertyValue = spItem["DocumentType"]; 
     if (!propertyValue.ToString().Equals(documentType)) continue; 

     foundItem = spItem; 
     break; 
    } 
    return foundItem; 
}