Поля FileRef
содержат относящийся к серверу URL-адрес документа, что-то вроде этого "/Subsite/Lists/ListName/DocumentName
".Если вы указываете только имя файла (например, mono.txt
), не должны работать ни Lt
, ни Eq
.
Чтобы устранить проблему, вы можете попробовать:
- Использовать
Eq
с относительным сервером URL вместо имени файла.
sb.AppendLine(@"<Where><Eq>");
sb.AppendLine(@"<FieldRef Name='FileRef' /><Value Type='Text'>/SubSite/Lists/Documents/momo.txt</Value>");
sb.AppendLine(@"</Eq></Where>");
- Или вы можете использовать оператор
<Contains>
(в CAML нет оператора <<code>EndsWith>).
sb.AppendLine(@"<Where><Contains>");
sb.AppendLine(@"<FieldRef Name='FileRef' /><Value Type='Text'>/momo.txt</Value>");
sb.AppendLine(@"</Contains></Where>");
Затем зацикливание возвращаемых результатов и удаление элементов, которые не заканчиваются на «/mono.txt
».
Кроме того, если вам важно имя документа без расширения,вы могли бы вы BaseName
вместо FileRef
поля.