You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C# Neo4jClient查询节点关联关系类型并返回统计与类型列表

代码调整方案

修正后完整实现代码

如果需要复用返回结构,可先定义对应的结果类:

public class RelationStatResult
{
    public long RelCount { get; set; }
    public List<string> Types { get; set; }
}

// 查询执行逻辑
var queryResults = client.Cypher
    .Match(@"()-[relations]-(p)")
    .Where("p.name = $targetName")
    .WithParam("targetName", "example")
    .Return(() => new RelationStatResult
    {
        RelCount = relations.Count(),
        // 显式调用Cypher的type()函数获取关系类型后再收集
        Types = Return.As<List<string>>("collect(type(relations))")
    })
    .Limit(10)
    .Results
    .ToList();

如果不需要复用返回结构,可直接使用匿名类型,和你原有写法兼容:

var queryResults = client.Cypher
    .Match(@"()-[relations]-(p)")
    .Where("p.name = $targetName")
    .WithParam("targetName", "example")
    .Return(() => new 
    {
        RelCount = relations.Count(),
        Types = Return.As<List<string>>("collect(type(relations))")
    })
    .Limit(10)
    .Results
    .ToList();

核心修改说明

  • 原代码中relations.CollectAs<List<string>>()是直接收集完整的关系对象,和你需要的type(relations)的结果不匹配,这里通过Return.As显式指定执行Cypher的collect(type(relations))逻辑,直接得到关系类型的字符串集合
  • 新增参数化查询替换硬编码的条件值,避免Cypher注入风险,同时适配多场景复用
  • 执行后得到的queryResults就是符合你要求结构的集合,序列化后和你期望的JSON输出完全一致

内容的提问来源于stack exchange,提问作者StuckOverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:42:03