我需要将过滤后的列表分配给另一个列表,但是我不知道要过滤的列表结构,只知道过滤器的参数。它只返回一个SPListItemCollection,我需要返回一个SPList。
下面是捕获列表的方法,我需要返回一个列表,但是按查询过滤:
/// <summary>
/// reads the list to display
/// </summary>
/// <returns></returns>
public SPList GetListFromProjectWorkSpace()
{
SPList list = null;
Guid projUID = _helper.GetProjUID();
if (projUID == Guid.Empty)
{
return list;
}
// read project data
IProjectWssInfoDataSet dataset = _service.ReadWssData(projUID);
if (dataset.ProjWssInfo.Count == 0)
{
return list;
}
// get workspace name and url
string workspaceName = dataset.ProjWssInfo[0].WorkspaceName;
string workspaceUrl = dataset.ProjWssInfo[0].WorkspaceUrl;
SPSecurity.RunWithElevatedPrivileges(()=>
{
using (SPSite site = new SPSite(workspaceUrl))
{
for (int i = 0; i < site.AllWebs.Count; i++)
{
if (!site.AllWebs[i].ServerRelativeUrl.Contains(workspaceName))
{
continue;
}
try
{
list = site.AllWebs[i].Lists[SelectedList];
}
catch
{
}
}
SPQuery query = new SPQuery();
query.Query = @"<Where>
<Contains>
<FieldRef Name='LinkFilenameNoMenu' />
<Value Type='Computed'>work</Value>
</Contains>
</Where>";
SPListItemCollection itens = list.Items.List.GetItems(query);
// I need help here
}
});
return list;
}
ATT,
爱德华多答案 0 :(得分:0)
没有方法可以“将列表分配到另一个列表”。您必须了解列表元数据和列表内容(项目)之间的根本区别:
SPList
代表列表的元数据; SPListItemCollection
包含列表的特定项 - 其数据。如果您需要将一个列表的(已过滤的)内容复制到另一个列表中,您必须了解两个列表的结构(允许的内容类型,字段)并逐个复制项目(可能的数据转换)
注意:要获取列表的元数据,知道其项目的集合,那么SPListItemCollection.List
属性。