我有一个列表,我想获得即将在10天或更短时间内过期的数据。所以我有两个字段创建日期和到期日期。
任何人都可以告诉我如何使用spquery或sharepoint中的任何其他方式实现此目的?
谢谢。
答案 0 :(得分:2)
有两种查询数据的方法(排除整个网站集的查询)SPQuery和SPMetal(LINQ to SharePoint)。
一般情况下,我尝试使用SPMetal生成的对象,只进入CAML(SPQuery)进行复杂查询。
以下是使用SPMetal对象的2个示例。
ExporttestsDataContext context = new ExporttestsDataContext(SPContext.Current.Web.Url);
var data = from d in context.Demo
where d.Expire < DateTime.Now.AddDays(5) && d.Expire >= DateTime.Now
select d;
foreach (DemoItem item in data)
{
//dowork
}
现在SPQuery
SPList list = SPContext.Current.Web.Lists["Demo"];
SPQuery query = new SPQuery();
query.Query = "<Where><And><Lt><FieldRef Name='Expire' /><Value Type='DateTime'><Today OffsetDays='10' /></Value></Lt><Geq><FieldRef Name='Expire' /><Value Type='DateTime'><Today /></Value></Geq></And></Where>";
SPListItemCollection items = list.GetItems(query);
foreach (SPListItem item in items)
{
//DoWork
}
有关CAML的一些信息,请参阅http://sharepointmagazine.net/articles/writing-caml-queries-for-retrieving-list-items-from-a-sharepoint-list。 (我不得不使用OffsetDays而不是Offset来完成上述工作)。
可以通过Google SPMetal获取更多相关信息。一个很好的工具是CKS开发工具,因为只需点击几下VisualStudio即可生成这个类。