Neo4jClient“ CASE WHEN”和返回

时间:2019-12-28 22:07:06

标签: c# neo4j neo4jclient

我正在尝试找出如何做这样的事情(简化):

.Return((groups) => new
{
    Board = parentBoard.As<Board>(),
    Groups = Return.As<Groups>("CASE WHEN groups IS NOT NULL THEN collect(groups) ELSE NULL END")
});

使用C#中的Neo4jClient。我已经尝试过了:

groups

但是会引发异常。我找不到有关如何使用neo4jclient正确执行此操作的任何信息。我的方法似乎确实返回了有效的json响应,但是neo4jclient显然无法读取它。因此,我怀疑neo4jclient希望以其他方式完成此操作?基本上,如果System.ArgumentException: Neo4j returned a valid response, however Neo4jClient was unable to deserialize into the object structure you supplied. First, try and review the exception below to work out what broke. If it's not obvious, you can ask for help at http://stackoverflow.com/questions/tagged/neo4jclient Include the full text of this exception, including this message, the stack trace, and all of the inner exception details. Include the full type definition of <>f__AnonymousType2`2[[Kolan.Models.Board, Kolan, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Kolan.Models.Groups, Kolan, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. Include this raw JSON, with any sensitive values replaced with non-sensitive equivalents: {"columns":["Board","Groups"],"data":[[{"extensions":{},"metadata":{"id":370,"labels":["Board"]},"paged_traverse":"http://localhost:7474/db/data/node/370/paged/traverse/{returnType}{?pageSize,leaseTime}","outgoing_relationships":"http://localhost:7474/db/data/node/370/relationshi ps/out","outgoing_typed_relationships":"http://localhost:7474/db/data/node/370/relationships/out/{-list|&|types}","create_relationship":"http://localhost:7474/db/data/node/370/relationships","labels":"http://localhost:7474/db/data/node/370/labels","traverse":"http://localhost:747 4/db/data/node/370/traverse/{returnType}","all_relationships":"http://localhost:7474/db/data/node/370/relationships/all","all_typed_relationships":"http://localhost:7474/db/data/node/370/relationships/all/{-list|&|types}","property":"http://localhost:7474/db/data/node/370/propert ies/{key}","self":"http://localhost:7474/db/data/node/370","incoming_relationships":"http://localhost:7474/db/data/node/370/relationships/in","properties":"http://localhost:7474/db/data/node/370/properties","incoming_typed_relationships":"http://localhost:7474/db/data/node/370/re lationships/in/{-list|&|types}","data":{"name":"empty","description":"An empty board.","id":"Mrw7M8myg"}},[{"boards":[],"group":null}]]]} (Parameter 'content') ---> System.ArgumentException: Accessed JArray values with invalid key value: "data". Int32 array index expected. at Newtonsoft.Json.Linq.JArray.get_Item(Object key) at Neo4jClient.Serialization.CommonDeserializerMethods.Map(DeserializationContext context, Object targetObject, JToken parentJsonToken, IEnumerable`1 typeMappings, Int32 nestingLevel) at Neo4jClient.Serialization.CommonDeserializerMethods.CreateAndMap(DeserializationContext context, Type type, JToken element, IEnumerable`1 typeMappings, Int32 nestingLevel) at Neo4jClient.Serialization.CommonDeserializerMethods.MutateObject(DeserializationContext context, JToken value, IEnumerable`1 typeMappings, Int32 nestingLevel, TypeMapping mapping, Type propertyType) at Neo4jClient.Serialization.CommonDeserializerMethods.CoerceValue(DeserializationContext context, PropertyInfo propertyInfo, JToken value, IEnumerable`1 typeMappings, Int32 nestingLevel) at Neo4jClient.Serialization.CypherJsonDeserializer`1.<>c__DisplayClass22_0.<ReadProjectionRowUsingCtor>b__0(JToken cell, Int32 cellIndex) at System.Linq.Enumerable.SelectIterator[TSource,TResult](IEnumerable`1 source, Func`3 selector)+MoveNext() at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items) at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Neo4jClient.Serialization.CypherJsonDeserializer`1.ReadProjectionRowUsingCtor(DeserializationContext context, JToken row, IDictionary`2 propertiesDictionary, IList`1 columnNames, IEnumerable`1 jsonTypeMappings, ConstructorInfo ctor) at Neo4jClient.Serialization.CypherJsonDeserializer`1.<>c__DisplayClass21_1.<ParseInProjectionMode>b__5(JToken token) at System.Linq.Enumerable.SelectEnumerableIterator`2.ToArray() at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Neo4jClient.Serialization.CypherJsonDeserializer`1.Deserialize(String content) --- End of inner exception stack trace --- 为null,我想返回null,因为collect(NULL)不只是返回null。有什么想法吗?

public class Board
{
    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("description")]
    public string Description { get; set; }
}

董事会课程:

public class Groups
{
    [JsonProperty("group")]
    public Group Group { get; set; }

    [JsonProperty("boards")]
    public IEnumerable<Board> Boards { get; set; }
}

Groups类:

Groups = groups == null ? null : groups.CollectAs<Groups>()

编辑:我也尝试过挤压三元条件:{{1}},但这引发了NotSupportedException,说“不支持FullConditionalExpression”

1 个答案:

答案 0 :(得分:0)

啊,我解决了。解决方案最终变得非常明显! Return.As<Groups>必须为Return.As<IEnumerable<Groups>>