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

C# 查询未返回预期结果(CAML),c#,.net,xml,sharepoint,caml,C#,.net,Xml,Sharepoint,Caml,但是,我试图使用CAML从附件列表中删除附件;当我执行查询时,它总是返回我的两个文件。我只需要使用传入的值作为参数来获取当前文件的文件 SP.List list = context.Web.Lists.GetByTitle("TempAttachments"); // Query SP.CamlQuery query = new SP.CamlQuery(); query.ViewXml = "<Quer

但是,我试图使用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>";
SP.List List=context.Web.List.GetByTitle(“临时附件”);
//质疑
SP.CamlQuery query=新SP.CamlQuery();
query.ViewXml=
""
+ ""
//工作通知匹配
+ ""
+“+ID+”\
+ ""
//或修改日期早于一天。
+ ""
+ ""
+ ""
+ ""
+ ""
+ "";
Beginswith标签会是问题吗

  • 查看
    ViewXml
    时,需要将CAML查询包装在
    视图
    元素中

  • 您的
    标记的格式都不正确;您正在关闭开始标记中的元素,这意味着您的XML格式不正确

  • 您的查询在为文件名指定的值的末尾有一个下划线,但在示例中,您的实际文件没有下划线,因此不应该有下划线

  • 因此,您的查询现在可以变成:

    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);
    
    CamlQuery query=new CamlQuery();
    query.ViewXml=string.Format(
    @"
    {0}
    “,ID);
    
    这两个文件在昨天之前都被修改过吗?如果是这样的话,两个文件都应该返回给该查询。我甚至在再次测试该方法之前修改了它们,但它仍然会将两个文件都拉回来。两个文件名是否都以您正在搜索的文本开头?是的。它们都以字符“ta”开头,然后都应该返回。有什么问题吗?如果它们都与筛选器匹配,那么为什么不希望同时看到这两个项目?这将从临时筛选器中带回0个文件list@DemetriusParham显然你的文件都不符合标准。以前你根本没有应用任何过滤器,因为你的查询格式不正确,现在你实际上正在使用它们。为了确保我理解。查询内容如下:“返回ID等于或以不晚于昨天修改的ID参数值开头的结果”@DemetriusParham no。它返回以
    ID
    值开头的所有项目,还包括今天或昨天未修改的所有项目。因此,查询未返回的唯一项目是在过去两天中修改的、不以指定ID值开头的项目。也就是说,值得注意的是,您只查看根文件夹。如果您希望项目不在根文件夹中,则需要指定适当的文件夹或使查询在所有文件夹中递归。CamlexNET nuget/extension缺少此功能,它会生成很棒的caml,但不会将其包装为“视图”。谢谢