如何将数据分配给变量?

How to assign data to a variable?

我正在尝试根据可用示例将 Neo4j 数据库中的数据分配给 C# 中的变量:

    var born = graphClient.Cypher
            .Match("(person:Person)")
            .Where((Person person) => person.name == "Tom Hanks")
            .Return(person => person.As<Person>().born)
            .Results;

但是当我尝试打印出值时:

    Console.WriteLine(born);

我在控制台中得到了这个:

    System.Collections.Generic.List`1[System.Int32]

我做错了什么?

由于 born 指的是一个列表,您将需要迭代项目:

foreach (int item in born)
{
    Console.WriteLine(item);
}

Console.WriteLine 在传递的对象上调用 ToString(),对于大多数类型,这将是类型名称,如您所见。

当您像上面那样进行迭代时,它会写入列表中每个整数的字符串表示形式。

根据您的输出,您在结果中收到了一组与您的过滤器相匹配的项目。 如果你想打印第一个元素,你可以这样做:

Console.WriteLine(born.First());

请记住,在该集合中它可能不止一个元素...

如果你想打印所有出生的物品,你可以使用foreach循环来实现: 您只需要执行以下操作:

foreach (var item in born)
{
    Console.WriteLine(item);
}

使用 foreach 循环是最好的方法,因为即使集合中有 0 个元素,它也能按预期工作(即:它不会失败或抛出异常) 您必须小心使用 First() ,因为如果您的集合为空,它会抛出异常。因此,如果您知道最终可能会得到一个空集合,则始终可以使用 FirstOrDefault() ,其中 return null - 或根据数据类型的默认值 - 如果是空集合

要么序列化您的 "born" 集合并打印,要么从 "born" 列表中逐个对象并打印

Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(born));