Итак, у меня возникла проблема при попытке вывести список определенных файлов с моего диска, исходный код был:
var request = _DriveService.Files.List();
request.Q = $"name = '{Properties.Settings.Default.SomeFileName0}'" +
$" or name = '{Properties.Settings.Default.SomeFileName1}'" +
$" or name = '{Properties.Settings.Default.SomeFileName2}'" +
$" or name = '{Properties.Settings.Default.SomeFileName3}'" +
" and trashed = false" +
$" and '{Properties.Settings.Default.MyParents[0]}' in parents";
request.Fields = "files(id, name, parents)";
var files = await request.ExecuteAsync();
Проблема была в том, что он вернул 12 файлов вместо 4 файлов. После небольшого тестирования или настройки я понял, что google drive игнорирует предложения and
, поэтому он извлекает все удаленные файлы.
Теперь, с этим кодом, он работает как шарм:
var parentsTrashed = $"and '{Properties.Settings.Default.Myparents[0]}' in parents and trashed = false";
var request = _DriveService.Files.List();
request.Q = $"name = '{Properties.Settings.Default.SomeFileName0}' {parentsTrashed}" +
$" or name = '{Properties.Settings.Default.SomeFileName1}' {parentsTrashed}" +
$" or name = '{Properties.Settings.Default.SomeFileName2}' {parentsTrashed}" +
$" or name = '{Properties.Settings.Default.SomeFileName3}' {parentsTrashed}";
request.Fields = "files(id, name, parents)";
var files = await request.ExecuteAsync();
Таким образом, пункты and
s и or
s должны быть в следующем порядке: (name and and and) OR (name and and and) OR ...
.
Я не могу найти никаких указаний на это ни в документации, ни в интернете: Это ошибка или она предназначена? Разве это не должно быть отмечено в документации, или я просто не нашел его, или это стандартная вещь, о которой я до сих пор не знал (я любитель)?