我有一个区分大小写的字典,
Dictionary<string, uint> itemNames = new Dictionary<string, uint>(StringComparer.Ordinal);
所以我可以在这本字典中有区分大小写的键。
例如我可以有以下键值对,
- { 测试, 10 }
- { 测试,20 }
- { 测试 1, 30 }
- { 测试 2, 40 }
...
当有人传递 key 时,我想检索值。检索应该部分不区分大小写,这意味着,如果完全匹配则返回区分大小写的结果,如果不存在区分大小写的键则检索不区分大小写的键值。
例如,将上述值插入到字典中
如果用户将 key 作为“TEST”传递,我需要返回 20。
如果用户将 key 作为“TEST1”传递,则找不到区分大小写的 key ,因此我需要返回 30。
如何在 C# 中实现这一点?
最佳答案
您应该首先使用TryGetValue
来检查是否有项目。如果没有,选择第一个匹配项:
string key = "test1";
int val;
if (!itemNames.TryGetValue(key, out val))
{
val = itemNames.FirstOrDefault
(k => string.Equals(k.Key, key, StringComparison.OrdinalIgnoreCase)
)?.Value ?? 0;
}
不过请注意这段代码的性能。如果您有一个很大的字典,第一次尝试时有很多遗漏,第二个(不区分大小写)字典会更好。
关于c# - 对区分大小写的字典 C# 进行不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44795376/