查询未返回预期结果(CAML)

时间:2015-06-18 14:52:54

标签: c# .net xml sharepoint caml

但是,我尝试使用CAML从附件列表中删除附件;当我进行查询时,它总是返回我的两个文件。我只需要使用传入的值作为参数获取当前文件。

SP.List list = context.Web.Lists.GetByTitle("TempAttachments");

 // Query
            SP.CamlQuery query = new SP.CamlQuery();
            query.ViewXml =
                 "<Query><Where><Or>"
                + "<BeginsWith>"
                // Job Note Matches
                + "<FieldRef Name=\"FileRef\"/>"
                + "<Value Type=\"Text\"/>" + ID + "_</Value>"
                + "</BeginsWith>"
                // OR Date Modified is older than one day.
                + "<Lt>"
                + "<FieldRef Name=\"Modified\"/>"
                + "<Value Type=\"DateTime\"/><Today OffsetDays=\"-1\" /></Value>"
                + "</Lt>"
                + "</Or>"
                + "</Where></Query>";

Beginswith标签可能是问题吗?

1 个答案:

答案 0 :(得分:2)

  1. 在发送View时,您的CAML查询需要包含在ViewXml元素中。

  2. 您的Value标记格式错误;您正在关闭开始标记中的元素,这意味着您的XML格式不正确。

  3. 您的查询在您为文件名指定的值的末尾有一个下划线,但在您mentioned in comments的示例中,您的实际文件没有一个,所以不应该&# 39;在那里。

  4. 所以您的查询现在可以变为:

    CamlQuery query = new CamlQuery();
    query.ViewXml = string.Format(
    @"<View>
      <Query>
        <Where>
          <Or>
            <BeginsWith>
              <FieldRef Name='FileRef'/>
              <Value Type='Text'>{0}</Value>
            </BeginsWith>
            <Lt>
              <FieldRef Name='Modified'/>
              <Value Type='DateTime'>
                <Today OffsetDays='-1'/>
              </Value>
            </Lt>
          </Or>
        </Where>
      </Query>
    </View>
    ", ID);