如何基于C#读取.dot图论文件并和QuickGraph联动

需求

> 💡 基于C#语言,获取dot文件内图谱所包含的节点、边等信息 >

  • 获取到的节点、边等数据可以利用QuickGraph构建图,从而进行增删改查等操作

方法过程

  1. 在Visual Studio平台(版本越新越好)新建一个C#项目,然后利用NuGet程序库中分别下载并安装以下四个依赖包。

上图中,依赖库FSharpx.Core(1.8.41)是依赖库DotParser运行所需要的,但是VS平台上没有相关版本,只能通过网上搜索下载后再一次利用NuGet安装本地库的方式安装。FSharpx.Core(1.8.41)的下载网址是:https://www.nuget.org/packages/FSharpx.Http

  1. 按照以下代码即可读取dot文件并得到相关节点和边信息
csharp 复制代码
string dotFileContent = File.ReadAllText(@"D:\MyEssay\SecondValley\FaultReconstruct\FaultStudyData\QinglongMountain\Graph\strata2.dot");
GraphData graphData = DotParser.DotParser.parse(dotFileContent);
var edges = graphData.Edges;
int ctt = edges.Count;
var nodes = graphData.Nodes;
int ctt2 = nodes.Count;

DotParser读取dot文件时,要求文本内不应出现/、<等特殊字符,如果存在则需要删除后重新读取。

  1. 利用QuickGraph重新组织图即可
csharp 复制代码
  var graph22= new AdjacencyGraph<string, Edge<string>>();
  foreach (var item in nodes)
  {
      graph22.AddVertex(item.Key);
  }

  foreach (var edge in edges)
  {
      string sourceId = edge.Key.Item1;  // 源节点
      string targetId = edge.Key.Item2;  // 目标节点

      // 确保节点存在
      if (!graph22.ContainsVertex(sourceId))
          graph22.AddVertex(sourceId);
      if (!graph22.ContainsVertex(targetId))
          graph22.AddVertex(targetId);

      Edge<string> edge2 = new Edge<string>(sourceId, targetId);
      

      // 添加边
      graph22.AddEdge(new Edge<string>(sourceId, targetId));
  }
相关推荐
奇特認2 小时前
mysql 集群技术 3.高可用之 MHA
数据库·mysql
Bioinfo Guy5 小时前
高分Panel复现系列|转录因子网络太乱?用模块框把重点圈出来
数据库·生物信息学·生信可视化
ltl6 小时前
Disaggregated DB 合集:Socrates、PolarDB、Taurus 的共同模式
数据库
椒颜皮皮虾྅7 小时前
OpenVINO C# API 3.3.1:支持OpenVINO 2026.3及GenAI增强
人工智能·c#·openvino
Blossom i8 小时前
大数据预处理与采集实验一:使用Python操作MySQL数据库
数据库·mysql
雾时之林9 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库
半亩码田10 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
老纪的技术唠嗑局10 小时前
超级干货分享:中小企业使用 OceanBase 实践经验汇总
数据库
CLOUD ACE11 小时前
谷歌云代理|零售商Target 如何利用 Spanner Graph 提升零售发现体验并将数据库维护成本降低 50%
数据库·零售
AI大模型-小雄11 小时前
Codex写分页接口为什么越翻越慢?用Cursor Pagination解决重复与漏数据
大数据·数据库·elasticsearch·搜索引擎·chatgpt·后端开发·codex