从 SPList (SharePoint) GetItems 区分大小写

GetItems case sensitive from SPList (SharePoint)

我在使用 SPListCAML QueryGetItems 方法时遇到问题。

我从网络上下文中得到 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);

在这种情况下,它 returns 结果是一个记录,其字段 "DocumentType" 的值为 "myvalue1" ,它不关心字符串敏感。

是否有可能获得考虑到敏感情况的项目?

感谢您的建议!

我在 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;
}