Sharepoint 列表检索大数据 C#
Sharepoint List retrieve large data C#
TryGetList 是否真的检索了整个列表,还是像 IQueryable ?如果我的列表有 100 万条记录,以下方法是否正确?
var list = web.Lists.TryGetList(<LIST NAME>);
SPListItem item = list .Items.Cast<SPListItem>().FirstOrDefault(x => x["Id"] != null && x["Id"].ToString() == id && x["Status"] != null && x["Status"].ToString().ToLower() == "active");
TryGetList 将 returns SPList 对象。如果列表存在于相应的网站中,将 return SPList 否则将 return null.
您可以直接通过ID获取ListItem。在这里你不想使用 Linq 过滤器。同样,您可以使用 Caml 查询。
按 ID 获取列表项:
SPList list = web.Lists.TryGetList(<LIST NAME>);
SPListItem item = list.GetItemById(id);
通过 Caml 查询获取列表项:
SPList list = web.Lists.TryGetList(<LIST NAME>);
SPListItemCollection itemsCol=list.GetItems(new SPQuery(){Query= "<Where><And><Eq><FieldRef Name='ID'/><Value Type='Counter'>"+id+"</Value></Eq><Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq></And></Where>"});
if(itemsCol!=null && itemsCol.count>0)
{
SPListItem item =itemsCol.FirstOrDefault();
}
Here 您可以下载 Caml Builder。
TryGetList
返回的 SPList
对象是一个已经具有该列表周围所有元数据的对象,但它没有列表中项目的任何数据。例如,您可以从 SPList
对象确定列表的名称,或者创建列表的时间,它不需要完成查询整个列表项集的所有工作。
当您访问 SPList
上的 Items
属性 并迭代它(就像您对 First
所做的那样)时,您 是 获取列表中的所有项目。 Items
属性 不是 IQueryable<T>
,您在其上使用的任何 LINQ 操作都作用于拉入内存的整个集合。您显然不想仅仅为了通过 ID 获取项目而这样做。要只获得那一项,请使用 GetItemByID
.
TryGetList 是否真的检索了整个列表,还是像 IQueryable ?如果我的列表有 100 万条记录,以下方法是否正确?
var list = web.Lists.TryGetList(<LIST NAME>);
SPListItem item = list .Items.Cast<SPListItem>().FirstOrDefault(x => x["Id"] != null && x["Id"].ToString() == id && x["Status"] != null && x["Status"].ToString().ToLower() == "active");
TryGetList 将 returns SPList 对象。如果列表存在于相应的网站中,将 return SPList 否则将 return null.
您可以直接通过ID获取ListItem。在这里你不想使用 Linq 过滤器。同样,您可以使用 Caml 查询。
按 ID 获取列表项:
SPList list = web.Lists.TryGetList(<LIST NAME>);
SPListItem item = list.GetItemById(id);
通过 Caml 查询获取列表项:
SPList list = web.Lists.TryGetList(<LIST NAME>);
SPListItemCollection itemsCol=list.GetItems(new SPQuery(){Query= "<Where><And><Eq><FieldRef Name='ID'/><Value Type='Counter'>"+id+"</Value></Eq><Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq></And></Where>"});
if(itemsCol!=null && itemsCol.count>0)
{
SPListItem item =itemsCol.FirstOrDefault();
}
Here 您可以下载 Caml Builder。
TryGetList
返回的 SPList
对象是一个已经具有该列表周围所有元数据的对象,但它没有列表中项目的任何数据。例如,您可以从 SPList
对象确定列表的名称,或者创建列表的时间,它不需要完成查询整个列表项集的所有工作。
当您访问 SPList
上的 Items
属性 并迭代它(就像您对 First
所做的那样)时,您 是 获取列表中的所有项目。 Items
属性 不是 IQueryable<T>
,您在其上使用的任何 LINQ 操作都作用于拉入内存的整个集合。您显然不想仅仅为了通过 ID 获取项目而这样做。要只获得那一项,请使用 GetItemByID
.