0

我对. CAML Query_GetItemsSPList

SPList从网络上下文中得到一个:

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

该列表包含多个值。

我只想在其中搜索具有名为“MyValue1”DocumentType的字段的值。(区分大小写)

我正在使用 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”,它不关心字符串敏感。

是否有可能获得考虑敏感案件的物品?

感谢您的建议!

4

1 回答 1

0

我在 sharepoint.stackexchange.com 上找到了答案:

都是不区分大小写的,得到结果后,需要遍历,做大小写敏感检查。

编辑
因为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;
}
于 2015-07-28T15:49:18.743 回答