我对Neo4j、Neo4jClient和Cypher Query非常熟悉。
我正在实现Graphity数据模型和算法。所以,我在Neo4j图形数据库上有自己的自我网络。
这是我的Cypher Query,我试图检索指定用户的自我网络。
MATCH(user:User {userID : '1'})-[:ego1*]->(friend)-[:LATEST_ACTIVITY]->(latest_activity)-[:NEXT*]->(next_activity)
RETURN friend, latest_activity, next_activity
结果如下:
所以,你看,顺序是:
2 3 4(用户ID)
这是我用Neo4jClient转换的代码
var query = graphClient.Cypher.Match("(user:User {userID : '1'})-[:ego1*]->(friend)-[:LATEST_ACTIVITY]->(latest_activity)-[:NEXT*]->(next_activity)").
Return((friend, latest_activity, next_activity) => new
{
friends = friend.As<User>(),
latest_activity = latest_activity.As<Activity>(),
next_activities = next_activity.CollectAs<Activity>()
}).Results;
List<User> friendList = new List<User>();
List<List<Activity>> activities = new List<List<Activity>>();
List<Activity> activity, tmp;
foreach (var item in query)
{
friendList.Add(item.friends);
Console.Write("UserID: " + item.friends.userID + ". Activities: ");
activity = new List<Activity>();
activity.Add(item.latest_activity);
Console.Write(item.latest_activity.timestamp);
foreach (var i in item.next_activities)
{
activity.Add(i.Data);
Console.Write(i.Data.timestamp);
}
activities.Add(activity);
Console.WriteLine();
}
这是上述代码的结果:
订单是
3 2 4(用户ID)
你看。
你能解释一下原因并告诉我如何修复吗?
谢谢你的帮助。