我试图根据部分或完全匹配的给定字符串获取字典中的所有项目。
我尝试了以下代码,但似乎无法正常工作
a.Where(d => d.Value.Contains(text)).ToDictionary(d => d.Key, d => d.Value);
你能告诉我如何实现这个目标吗?
答案 0 :(得分:7)
您提供的代码应该可以正常工作,假设您确实想要找到条目,其中值具有部分匹配。如果你看到别的东西,我怀疑你的诊断有缺陷。如果您想查找键部分匹配的条目,您只想交换
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