我们正在尝试将每个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;