Я думаю, что лучший способ добиться этого для универсального запроса выбора со структурой, подобной
Q = "Для вас в пользователях FILTER 'x@example.com' = u.email" [ 1111] blockquote>
должен сначала добавить в запрос предложение LIMIT и только заставить его возвращать постоянное значение (в отличие от полного документа).
Например, следующий запрос возвращает одно совпадение, если такой документ существует, или пустой массив, если совпадения нет:
FOR u IN users FILTER 'x@example.com' == u.email LIMIT 1 RETURN 1
(обратите внимание, что я также изменил оператор из
=
на==
, потому что в противном случае запрос не будет проанализирован).Обратите внимание, что этот запрос может принести большую пользу от создания индекса для атрибута поиска, то есть
Наконец, чтобы ответить на ваш вопрос, шаблон для
EXISTS
-подобного запроса затем станетLENGTH(%Q LIMIT 1 RETURN 1)
или уточнен с помощью примера запроса:
LENGTH(FOR u IN users FILTER 'x@example.com' == u.email LIMIT 1 RETURN 1)
[ 118] вернет количество совпадений, которое в этом случае будет либо 0, либо 1. И это также может быть использовано в условиях фильтра, например, как показано ниже
FOR .... FILTER LENGTH(...) RETURN ...
, потому что
LENGTH(...)
будет либо 0, либо 1, который в контексте условия FILTER оценивается как ложный или истинный.
Параметр out
имеет значение "by ref" - так что вы найдете pInfo.ParameterType.IsByRef
возвращает true. Чтобы получить базовый тип not-ref, вызовите GetElementType ()
:
Type realType = pInfo.ParameterType.GetElementType();
(Разумеется, делать это следует только в том случае, если имеет значение по ref. Это относится к ref
параметры тоже.)
Является ли pInfo.ParameterType тем типом, который вы ищете?
Согласно документам, свойство ParamterType класса PropertyInfo: " Объект Type, который представляет тип этого параметра. "
Кроме того, следующий код дает ожидаемый результат:
Type t = typeof (X);
var mi = t.GetMethod("Method");
var parameters = mi.GetParameters();
foreach(Type parameterType in parameters.Select(pi => pi.ParameterType))
Console.WriteLine(parameterType.IsByRef ? parameterType.GetElementType() : parameterType);
Редактировать: Как указывает Джон Скит, если параметр по ссылке; Вы должны использовать GetElementType, чтобы получить правильный тип. Я обновил пример кода.