有没有更快的方法来做这个LINQ?

时间:2014-12-11 16:36:49

标签: c# linq sharepoint foreach sharepoint-2010

我的程序中有一个循环,循环遍历数千个对象以找到具有特定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;
    }
}

2 个答案:

答案 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)
{
      //...
}
相关问题