我想从列表中获取一个项目而不加载列表中的所有项目。
我知道我可以通过调用SPList.getElementbyId(myID)
来执行此操作,但如果我不知道列表中是否存在此myID,我该如何验证呢?
是的我可以使用
SPListItem myItem = myList.Items[myID];
if (myItem == null)
{
// log that we don't have this item
}
但是,这样,当我调用myList.Items
时,列表中的所有项都会加载到myList
对象中(如果我有40,000项,那么它确实是一个性能问题) ,所以我宁愿使用:
SPListitem myItem = myList.getElementById(myID);
这样我就不会调用Items
属性,我们也不需要加载这些项目。
现在的问题是,如果该ID在列表中执行了注释,则方法getElementById
将抛出异常。将它放在try/catch
语句中并不是一个解决方案,因为我们可能想要验证几个ID,并且处理所有其他问题会再次导致性能问题。
是否有任何想法来检查是否存在具有给定ID的项目?
答案 0 :(得分:2)
您可以使用检查运行的所有ID构建查询,并将返回的列表与您检查的ID进行比较,并确定哪些有效。
通过这种方式,您只能在找到丢失的内容时检索所需内容。