gpt4 book ai didi

c# - Neo4jClient "CASE WHEN"连同返回

转载 作者:行者123 更新时间:2023-12-02 01:52:52 27 4
gpt4 key购买 nike

我正在尝试弄清楚如何做这样的事情(简化):

RETURN CASE WHEN groups IS NOT NULL THEN collect(groups) ELSE NULL END

使用 C# 中的 Neo4jClient。我试过这个:

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

但它抛出异常。我无法找到有关如何使用 neo4jclient 正确执行此操作的任何信息。我这样做的方式似乎确实返回了有效的 json 响应,但 neo4jclient 显然无法读取它。因此我怀疑 neo4jclient 希望以其他方式完成此操作?基本上,我想返回 null if groups为 null,因为collect(NULL) 不仅仅返回 null。有什么想法吗?

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 ---

板级:

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 == null ? null : groups.CollectAs<Groups>()但这引发了 NotSupportedException,表示“不支持 FullConditionalExpression”

最佳答案

啊,我解决了。解决方案最终非常明显! Return.As<Groups>需要是Return.As<IEnumerable<Groups>>

关于c# - Neo4jClient "CASE WHEN"连同返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59515268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com