C# 在SPListItem/SPList中迭代

C# 在SPListItem/SPList中迭代,c#,sharepoint,splistitem,C#,Sharepoint,Splistitem,我正在制作一份清单,供人们在公司网站上完成任务。 我现在正在研究的功能是,一旦他们完成一项任务并将其标记为完成,我希望我们的sharepoint Web部件向他们发送一封电子邮件,其中包含他们仍然需要完成的任务的列表 由于权力机构希望能够随意在列表中添加和减少项目,因此需要模块化,因此检查列表也需要模块化,并以模块化的方式编写 我遇到的问题是,所有任务都存储在现有代码的SPList中。 我不确定如何迭代列表以确定此人是否已经完成了以下任务。我没有看到任何下一个、上一个、头部或尾部操作(正如我从列

我正在制作一份清单,供人们在公司网站上完成任务。 我现在正在研究的功能是,一旦他们完成一项任务并将其标记为完成,我希望我们的sharepoint Web部件向他们发送一封电子邮件,其中包含他们仍然需要完成的任务的列表

由于权力机构希望能够随意在列表中添加和减少项目,因此需要模块化,因此检查列表也需要模块化,并以模块化的方式编写

我遇到的问题是,所有任务都存储在现有代码的SPList中。 我不确定如何迭代列表以确定此人是否已经完成了以下任务。我没有看到任何下一个、上一个、头部或尾部操作(正如我从列表中所期望的那样)。由于索引使用字符串,因此其行为更像是关联数据结构(map)或数据库中的主键

请帮忙,谢谢大家

干杯


-Jeremiah Tantongco

SharePoint列表不是计算机科学中的列表,而是最终用户所期望的列表:事物列表

您应该更多地将列表视为类似于数据库表。如果要根据条件查找表(列表)中的记录(项),则应使用查询

因此,在SPList中查找SPListItems的正确方法是使用一个SPQuery,在该SPQuery中,您可以使用一个漂亮的XML语法(CAML)指定您的条件,然后将SPQuery传递给SPList.GetItems,从而获得一个SPListItems集合


这应该给你一些谷歌的条款。如果您需要查询语法方面的更多帮助,请使用或向我们提供一些更具体的信息。

这可能会解决您的问题

SPList interviewList = myWeb.Lists["listtoiterate"];
foreach (SPListItem interview  in interviewList)
{
// Do Something
} 

是否应该遍历列表可能是一个有争议的问题,但是如果不可避免(就像我的情况一样),可以使用以下代码

        SPSite siteCollection = new SPSite("http://localhost/");
        SPWeb site = siteCollection.RootWeb;
        SPList myList = site.Lists["My List"];
        SPListItemCollection itemCollection = myList.Items;

        foreach (SPListItem item in itemCollection)
        {
            //Do something with each item
        }

您的用户正在使用Outlook吗?如果是这样的话,您可以使用开箱即用功能并保存一些工作。添加到该功能中,您还可以使用LINQ查询SPList: