如何合并SPListItemCollection结果?

时间:2016-11-24 13:28:16

标签: sharepoint

我们正在尝试将每个SPListItemCollection的结果合并到单个SPListItemCollection中。

List.GetItems(SPQuery)命令将放在for ...循环中,它将为每个项目提供 SPListItemCollection 作为输出。需要合并每个输出并生成单个 SPListItemCollection。

我一直在使用以下方法迭代SPListItemCollection并添加到其他SPListItemCollection.After迭代后,我发现resultset.count始终为“0”并且它没有附加任何项目。

在设置“SPQuery.ViewFields”之后,resultset.count返回计数,并且项目将附加到SPListItemCollection中。但是,在设置“SPQuery.ViewFields”属性之后,下面的方法需要花费更多时间(将近20 - 30分钟,15,000条记录)来附加项目。

如果我没有设置属性,则该方法在迭代中快速执行但resultset.count始终为“0”。

        public static SPListItemCollection MergeCollection(List<SPListItemCollection> collections)
    {
        SPListItemCollection resultSet = collections[0];
        try
        {
            for (int i = 1; i < collections.Count; i++)
            {

                int j = 0;
                foreach (SPListItem listItem in collections[i])
                {

                    SPListItem item = resultSet.Add();
                    foreach (SPField field in collections[i].Fields)
                    {
                        if (field.InternalName != "ID")
                            item[field.InternalName] = listItem[field.InternalName];
                    }
                    j++;
                }

                logging.Add("Result Count {0}", resultset.Count())
            }

        }
        catch (Exception ex)
        {                

        }
        return resultSet;

0 个答案:

没有答案