1

我有一个列表,我想获取即将在 10 天或更短的时间内过期的数据。所以我有两个字段创建日期和过期日期。

谁能告诉我如何在共享点中使用 spquery 或任何其他方式来实现这一点?

谢谢你。

4

1 回答 1

2

有 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 中单击几下即可生成此类。

于 2012-08-07T20:28:10.900 回答