如何在字典对象中找到部分匹配的键

本文关键字:字典 对象 | 更新日期: 2023-09-27 18:11:08

我试图根据部分或完全匹配的给定字符串抓取字典中的所有项目。

我尝试了下面的代码,但似乎不工作

a.Where(d => d.Value.Contains(text)).ToDictionary(d => d.Key, d => d.Value);

你能告诉我如何实现这个吗?

如何在字典对象中找到部分匹配的键

您给出的代码应该工作得非常好,假设您真的想找到,其中有部分匹配。如果你看到别的东西,我怀疑你的诊断有问题。如果要查找部分匹配的项,只需交换

a.Where(d => d.Value.Contains(text))

a.Where(d => d.Key.Contains(text))

简短但完整的程序,演示您给出的代码的工作:

using System;
using System.Collections.Generic;
using System.Linq;
class Test
{
    static void Main()
    {
        var original = new Dictionary<string, string> {
            { "a", "foo" },
            { "b", "bar" },
            { "c", "good" },
            { "d", "bad" },
        };
        string needle = "oo";
        var filtered = original.Where(d => d.Value.Contains(needle))
                               .ToDictionary(d => d.Key, d => d.Value);
        foreach (var pair in filtered)
        {
            Console.WriteLine("{0} => {1}", pair.Key, pair.Value);
        }
    }
}
输出:

a => foo
c => good