От эта ссылка у них, кажется, есть много возможных решений, но тот, который казался самым простым, был комментарием:
Код F#:
type FCallback = delegate of int*int -> int;;
type FCallback =
delegate of int * int -> int
let f3 (f:FCallback) a b = f.Invoke(a,b);;
val f3 : FCallback -> int -> int -> int
Код C#:
int a = Module1.f3(Module1.f2, 10, 20); // method gets converted to the delegate automatically in C#
К сожалению, движок приложений Google не может выполнять частичное совпадение текста
Совет: фильтры запросов не имеют явного способа сопоставления только части строкового значения , но вы можете подделать совпадение префикса, используя фильтры неравенства:
db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")
Это соответствует каждой сущности MyModel с опорой свойства строки, которая начинается с символов abc. Строка Юникода u "\ ufffd" представляет собой максимально возможный символ Юникода. Когда значения свойств сортируются по индексу, значения, попадающие в этот диапазон, - это все значения, начинающиеся с данного префикса.
App Engine не может выполнять запросы типа «нравится», потому что не может выполнять их эффективно. Однако и ваша база данных SQL не может: запрос 'foo LIKE "% bar%"' может быть выполнен только путем последовательного сканирования всей таблицы.
Вам нужен инвертированный индекс. Базовый полнотекстовый поиск доступен в App Engine с помощью SearchableModel . Билл Кац написал расширенную версию здесь , а коммерческое решение для App Engine (с бесплатной версией) доступно здесь .