我的程序中有一个循环,循环遍历数千个对象以找到具有特定id的正确对象。 有没有比这更好更快的方式
int id;
SPList list = SPContext.Current.Web.Lists.TryGetList("DataLibrary");
IEnumerable<SPListItem> _dataitems = list.Items.OfType<SPListItem>();
foreach (SPListItem item in _dataextantitems)
{
if (item.ID == id)
{
title= item.Title;
}
}
答案 0 :(得分:4)
使用GetItemById
的{{1}}。
SPList
如果您的列表包含大量列,并且您希望避免将其全部删除,则可以将仅 var title = SPContext.Current.Web.Lists["DataLibrary"].GetItemById(id).Title;
列下拉:
Title
现在,如果你 想要在这里使用LINQ,你可以使用LINQ to Sharepoint,但它实际上不会简化代码。使用SPMetal.exe根据列表生成文件后,您可以编写:
var title = SPContext.Current.Web.Lists["DataLibrary"]
.GetItemByIdSelectedFields(id, "Title").Title;
答案 1 :(得分:0)
确保您的列表已排序。然后,您可以使用列表中的BinarySearch方法或编写自己的implementation。如果没有,您可以使用linq缩短代码。
var itemToLookup = list.Items.OfType<SPListItem>().FirstOrDefault(x => x.ID == id);
if (itemToLookup != null)
{
//...
}