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

如何在List<string>中存储键值对并通过Lambda按键查询?

解决方案:自定义字符串格式存储键值对,方便Lambda查询

嘿,我懂你的处境——必须用List<string>但又想高效地存储键值对、还能按键快速查询对吧?之前直接用Tuple.ToString()生成的字符串虽然能存,但解析起来既麻烦又容易出错(比如键/值里有逗号或括号的话就崩了)。下面给你两个实用的方案:

方案1:用自定义分隔符拼接键值对

这是最简单直接的方式,选一个不会出现在你的键或值中的字符作为分隔符(比如|、#或者::),存储和解析都很直观:

存储键值对

var list = new List<string>();
string key = "MyKey";
string value = "MyValue";

// 用分隔符拼接成字符串存入列表
list.Add($"{key}|{value}");

按键查询并解析

string targetKey = "MyKey";

// 用Lambda筛选匹配的键值对字符串
var matchedItem = list.FirstOrDefault(item => 
    item.Split('|')[0] == targetKey
);

if (matchedItem != null)
{
    var parts = matchedItem.Split('|');
    string foundKey = parts[0];
    string foundValue = parts[1];
    // 这里就可以使用找到的键和值啦
    Console.WriteLine($"找到键:{foundKey},对应值:{foundValue}");
}

方案2:用JSON序列化存储(更健壮)

如果你的键或值可能包含特殊字符,或者需要更规范的格式,用JSON序列化是更稳妥的选择:

存储键值对

using System.Text.Json;

var list = new List<string>();
var keyValuePair = new { Key = "MyKey", Value = "MyValue" };

// 序列化为JSON字符串存入列表
list.Add(JsonSerializer.Serialize(keyValuePair));

按键查询并解析

string targetKey = "MyKey";

// 反序列化后匹配键
var matchedJson = list.FirstOrDefault(json => 
{
    var kvp = JsonSerializer.Deserialize<dynamic>(json);
    return kvp.Key == targetKey;
});

if (matchedJson != null)
{
    // 反序列化为强类型元组或类
    var kvp = JsonSerializer.Deserialize<(string Key, string Value)>(matchedJson);
    Console.WriteLine($"找到键:{kvp.Key},对应值:{kvp.Value}");
}

为什么不推荐用默认Tuple.ToString()?

默认的Tuple.ToString()输出格式是(MyKey, MyValue),如果你的键或值里包含逗号、括号这类字符,拆分字符串时会直接出错,而且解析逻辑会变得很复杂,远不如上面两种方案可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:30:11