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

如何通过字段名称而非索引从对象列表中获取完整对象

通过name_connection获取对应Connection对象的解决方案

在已将JSON反序列化为Test类型的m_listTest对象后,可通过以下几种方式根据name_connection字段值获取对应的Connection对象,无需依赖数组索引:

1. 单次查询:使用LINQ直接查找

适合仅需单次查询的场景,直接通过LINQ方法匹配:

// 获取匹配name_connection的对象(不存在则返回null)
var targetConn = m_listTest.connections.FirstOrDefault(conn => conn.name_connection == "Connection_A");

// 若需确保对象存在(不存在时抛出异常),使用First方法
// var targetConn = m_listTest.connections.First(conn => conn.name_connection == "Connection_A");

2. 多次查询:转为Dictionary提升效率

如果需要多次根据name_connection查询,建议先将数组转为Dictionary,利用字典O(1)的查找效率优化性能:

// 一次性构建字典(键为name_connection,值为对应Connection对象)
var connDict = m_listTest.connections.ToDictionary(conn => conn.name_connection);

// 后续查询时通过TryGetValue避免键不存在的异常
if (connDict.TryGetValue("Connection_A", out var targetConn))
{
    // 找到目标对象,执行后续逻辑
}
else
{
    // 未找到对应名称的连接
}

3. 处理重复name_connection的场景

若JSON中存在name_connection重复的情况,使用ToLookup进行分组查询:

// 构建分组查询结构
var connLookup = m_listTest.connections.ToLookup(conn => conn.name_connection);

// 获取所有匹配指定name_connection的对象
var matchedConns = connLookup["Connection_A"];
foreach (var conn in matchedConns)
{
    // 处理每个匹配的Connection对象
}

4. 封装到Test类中简化调用

可以在Test类中添加属性或方法,将查询逻辑封装起来,方便项目中复用:

public class Test
{
    public Connection[] connections { get; set; }

    // 懒加载字典,首次使用时构建
    private Dictionary<string, Connection> _connDict;
    public Dictionary<string, Connection> ConnectionDict
    {
        get
        {
            _connDict ??= connections?.ToDictionary(c => c.name_connection) ?? new Dictionary<string, Connection>();
            return _connDict;
        }
    }

    // 直接提供查询方法
    public Connection GetConnectionByName(string connName)
    {
        return connections?.FirstOrDefault(c => c.name_connection == connName);
    }
}

使用封装后的逻辑:

// 通过字典属性查询
var conn = m_listTest.ConnectionDict["Connection_A"];

// 通过方法查询
var conn = m_listTest.GetConnectionByName("Connection_A");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:38:37