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

Query not returning expected results(CAML)

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

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. 当看到 ViewXml.

  2. 时,您的 CAML 查询需要包装在 View 元素中
  3. 您的 Value 标签都格式不正确;您正在关闭开始标记中的元素,这意味着您的格式不正确 XML.

  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);