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

如何在C#中将TOML的[Table]转换为Dictionary?

解决Tomlyn解析TOML表格转Dictionary的问题

错误原因

你代码里的model["Parameters"]返回的是TomlTable类型(Tomlyn库中用于表示TOML表格的对象),该类型并没有内置的ToDictionary()方法,直接调用会导致编译错误。

解决方案

下面提供两种可行的转换方式:

方法1:手动遍历构建字典

using System;
using System.Collections.Generic;
using System.IO;
using Tomlyn;
using Tomlyn.Model;

class Program
{
    static void Main(string[] args)
    {
        var toml = File.ReadAllText("parameters.toml");
        TomlTable model = Toml.ToModel(toml);

        // 将TomlTable转换为Dictionary<string, object>
        var parametersTable = model["Parameters"] as TomlTable;
        Dictionary<string, object> databaseDictionary = new Dictionary<string, object>();
        
        if (parametersTable != null)
        {
            foreach (var kvp in parametersTable)
            {
                databaseDictionary.Add(kvp.Key, kvp.Value);
            }
        }

        // 打印字典内容
        foreach (KeyValuePair<string, object> pair in databaseDictionary)
        {
            Console.WriteLine($"{pair.Key}: {pair.Value}");
        }
    }
}

方法2:使用LINQ快速转换(需引用System.Linq)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Tomlyn;
using Tomlyn.Model;

class Program
{
    static void Main(string[] args)
    {
        var toml = File.ReadAllText("parameters.toml");
        TomlTable model = Toml.ToModel(toml);

        // 利用LINQ将TomlTable转成Dictionary
        var parametersTable = model["Parameters"] as TomlTable;
        Dictionary<string, object> databaseDictionary = parametersTable?
            .ToDictionary(kvp => kvp.Key, kvp => kvp.Value) 
            ?? new Dictionary<string, object>();

        // 打印字典内容
        foreach (KeyValuePair<string, object> pair in databaseDictionary)
        {
            Console.WriteLine($"{pair.Key}: {pair.Value}");
        }
    }
}

补充说明

  • 两种方法都需要先将model["Parameters"]强制转换为TomlTable,因为model的索引器返回的是object类型。
  • 添加null检查可以避免当TOML文件中不存在"Parameters"表格时出现空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:45:25