从 SPList (SharePoint) GetItems 区分大小写
GetItems case sensitive from SPList (SharePoint)
我在使用 SPList
的 CAML Query
和 GetItems
方法时遇到问题。
我从网络上下文中得到 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;
}
我在使用 SPList
的 CAML Query
和 GetItems
方法时遇到问题。
我从网络上下文中得到 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;
}