[英]How do I write this in Neo4jClient
多虧了Dave Bennett,我有了一個很棒的Neo4j查詢,可以提供我需要的結果。 我需要讓它在Neo4JClient中工作。 這是我正在工作的Neo4j查詢:
`// Composite Tile with related users
match (t:Tile{summary:"Test 1"})<-[:ASSIGNED_TO]-(u:User)
with {summary: t.summary,
id: t.id,
sprint_id: t.sprint_id,
size: t.size,
percent_done: t.percent_done,
color: t.color_id,
description: t.description,
queue_id: t.queue_id,
swimlane_id: t.swimlane_id,
icons: t.icons,
order: t.order,
assignees: collect(u)} as tile
RETURN collect(tile) as tiles`
Visual Studio和/或Neo4jClient對我的嘗試不是很滿意:
var compositeTile = client.Cypher
.Match("(t:Tile)<-[:ASSIGNED_TO]-(u:User)")
.Where((Tile t)=> t.summary == tile.summary)
.With( {
summary: t.summary,
id: t.id,
sprint_id: t.sprint_id,
size: t.size,
percent_done: tile.percent_done,
color: t.color,
description: t.description,
queue_id: t.queue_id,
swimlane_id: t.swimlane_id,
icons: t.icons,
Order: t.order,
assignees: collect(u)
} as tile)
.return collect(tile) as tiles;
我懷疑這只是拋出很多紅色的波浪線,因為我沒有正確格式化.with語句。 我還沒有找到一個例子,所以我在這里問。 如何在Neo4jClient中正確執行此操作?
因此,對於您的問題有兩個答案-第一個是.With
語句將字符串作為參數,因此,您只需要用"
(或@"
換行)即可保留文本格式。 第二個答案對您來說更是一個問題:
無法使用Neo4jClient
做您想做的Neo4jClient
-目前,它不允許您創建匿名類型。 它無法反序列化內容。 我認為這可能是一個快速解決方案,但似乎會涉及更多問題。 因此,我們在這里查看的是查詢的更改。
我假設您有一個名為Tile
的類,其中包含您要使用的屬性。 因此, 我將查詢更改為以下內容:
client.Cypher
.Match("(t:Tile)<-[:ASSIGNED_TO]-(u:User)")
.Where((Tile t) => t.summary == tile.summary)
.Return((t,u) => new {
Tile = t.As<Tile>(),
User = u.CollectAs<User>()
});
這將為您提供一個帶有Tile和IEnumerable<Node<User>>
元素的C#匿名類型,顯然您希望在Tile
使用Users
,因此可以解析結果:
var tiles = new List<Tile>();
foreach (var result in results)
{
var tile = result.Tile;
foreach (var user in result.Users)
tile.users.Add(user.Data);
tiles.Add(tile);
}
您可能會發現的一件事是,您需要初始化Users
集合,因此可以將Users = new List<User>()
到Tile
構造函數中,或者僅在解析數據之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.