创建具有SharePoint列-SharePoint 2010的值字段的CAML查询

时间:2014-07-09 08:25:20

标签: sharepoint-2010 caml

我有一个SharePoint列表。它有两列开始日期和结束日期。 我需要查询并获取数据if(开始日期+ 7天>结束日期)。 通过CAML构建器,不可能在值节点上具有SharePoint列并构建查询。 任何的想法? 我试过下面的。但是没有工作。

<Query>
   <Where>
      <Eq>
         <FieldRef Name='EndDate' />
         <Value IncludeTimeValue='TRUE' Type='DateTime'><StartDate+7/></Value>
      </Eq>
   </Where>
</Query>

3 个答案:

答案 0 :(得分:1)

您无法在CAML查询中将两个项目字段相互比较。您可以创建计算字段并在其中进行比较,也可以使用LINQ。像这样:

SPList tasks = SPContext.Current.Web.Lists["tasks"];
var ts = from t in tasks.Items.OfType<SPListItem>() where t["DueDate"] == null || (DateTime)t["Modified"] > (DateTime)t["DueDate"] select t;

答案 1 :(得分:0)

答案 2 :(得分:0)

我建议创建一个计算列以计算开始日期和结束日期之间的差额:

= DATEDIF([创建],[结束日期],“ d”)

,然后在您的camlquery过滤器中进行大于或等于7天的

<Query>
   <Where>
      <Geq>
         <FieldRef Name="DateDiff"/>
         <Value IncludeTimeValue='TRUE' Type='Number'>7<Value>
      </Geq>
   </Where>
</Query>