我有一个列表,我想获取即将在 10 天或更短的时间内过期的数据。所以我有两个字段创建日期和过期日期。
谁能告诉我如何在共享点中使用 spquery 或任何其他方式来实现这一点?
谢谢你。
我有一个列表,我想获取即将在 10 天或更短的时间内过期的数据。所以我有两个字段创建日期和过期日期。
谁能告诉我如何在共享点中使用 spquery 或任何其他方式来实现这一点?
谢谢你。
有 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 才能使上述工作正常进行)。
可以谷歌 SPMetal 了解更多信息。一个不错的工具是 CKS 开发工具,因为它只需在 Visual Studio 中单击几下即可生成此类。