Я знаю, как динамически создавать свои статьи MATCH
и WHERE
, и в моей ситуации это, к сожалению, что-то мне нужно сделать ... ТАК, у меня есть что-то вроде (и это надуманный пример):Dynamically return from Neo4jclient
var query = client
.Cypher
.Match("(u1:User)-[:LINKED]->(w:Web)","(u2:User)-[:LINKED]->(w:Web)","(u3:User)-[:LINKED]->(w:Web)")
.Where("u1.User.Id = {u1Param}").WithParam("u1Param", 1)
.AndWhere("u2.User.Id = {u2Param}").WithParam("u2Param", 2)
.AndWhere("u3.User.Id = {u3Param}").WithParam("u3Param", 3);
Match
и Where
генерируются динамически на основе пользовательского ввода, и это создает правильную Сайферу.
MATCH
(u1:User)-[:LINKED]->(w:Web), (u2:User)-[:LINKED]->(w:Web), (u3:User)-[:LINKED]->(w:Web)
WHERE
u1.User.Id = 1
AND u2.User.Id = 2
AND u3.User.Id = 3
На сервере (в Cypher), я могу сделать что-то вроде:
RETURN u1, u2, u3
и я получу 3 узлов я ищу. Моя проблема заключается в общем способе Returning
данных через neo4jclient осуществляется через слова, так, чтобы повторить я хотел бы сделать:
query.Return(
(u1, u2, u3) =>
{
U1 = u1.As<User>(),
U2 = u2.As<User>(),
U3 = u3.As<User>()
});
Я не знаю, что там будет только ответы «3», не может быть гораздо больше или даже меньше. Любые идеи о том, как достичь этого? Или как есть, либо совершенно по-другому, я открыт для всех вариантов.
Я хотел бы что-то вроде:
query.Return<User>("u1", "u2", "u3"); //returning IEnumerable<User>
или, может быть:
query.Return<User>("u1").AndReturn("u2").AndReturn("u3");
Я знаю, что могу вернуться к этим запросам вызова БД непосредственно через HttpClient
или некоторые такие, но я Если не ошибаюсь, избегайте этого. Честно говоря, я был бы доволен разбором их всех до dynamic
, но в настоящее время это невозможно (или это ??? :)).
К сожалению, нет ошибки в коде для '', что приводит к исключению: «Перегрузка, которую вы вызывали, принимает идентификатор (например: foo), но похоже, что вы пытались пройти (например: foo, bar) « –
Однако, если я пропущу это в отладчике, он работает как ожидалось, я положу запрос на извлечение с исправлением ... –
Вы могли бы сделать. Возврат (() => new {Users = Return.As> ("[u1, u2, u3]")}). Результаты. ВыберитеMany (r => r.Users) как неуклюжий обходной путь. :) –