如何在neo4jclient中返回自定义类型的值

时间:2014-05-22 08:29:30

标签: c# neo4jclient

我是neo4jclient的新手,我不知道如何在neo4jclient中返回自定义类型。 我有以下密码:

var result = client.Cypher
                .Match("(u:User)-[:" + FriendRelation + "]->(friend:User)")
                .Return((user, friend) => new RelationInDB(user.As<User>().id, friend.As<User>().id)).Results;

我想返回所有有朋友关系的id对,我想在自定义类中存储两个id - RelationInDB,但我不知道怎么写Return(我知道返回上面的错误) 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

好的,有两件事你会发现导致你出现问题:

  1. 您无法返回类的构造函数,您需要使用默认构造函数和属性设置
  2. 您的退货声明为(user, friend) =>,但您的匹配声明为(u:User)。您的退货声明应为:(u, friend) =>
  3. 为此目的:

     var results = client
          .Cypher
          .Match("(u:User)-[:" + FriendRelation + "]->(friend:User)")
          .Return((u, friend) => new RelationInDB{UserId = u.As<User>().Id, FriendId = friend.As<User>().Id}).Results;
    

    我的RelationInDB课程定义为:

    public class RelationInDB
    {
        public int FriendId { get;  set; }
        public int UserId { get;  set; }
    
        public RelationInDB() { }
    }
    

    如果您无法更改RelationInDB类,并且需要按原样使用它,则必须使用匿名类型进行返回:

     var results = client
          .Cypher
          .Match("(u:User)-[:" + FriendRelation + "]->(friend:User)")
          .Return((u, friend) => new {UserId = u.As<User>().Id, FriendId = friend.As<User>().Id}).Results;
    

    然后用以下内容解析:

    var relsInDb = results.Select(result => new RelationInDB(result.UserId, result.FriendId));