【发布时间】:2021-06-22 18:49:13
【问题描述】:
如何在 C# 中使用 LINQ 过滤嵌套字典?
这是我开始使用的字典:
Dictionary<string, Dictionary<string, string>> countriesByContinentDictionary = new Dictionary<string, Dictionary<string, string>>
{
{
"Europe",
new Dictionary<string, string> {
{ "0", "France" },
{ "1", "Germany"},
{ "2", "Switzerland" }
}
},
{
"Asia",
new Dictionary<string, string>
{
{"zero", "India" },
{"1", "Pakistan" },
{"2", "Russia" }
}
},
{
"Africa",
new Dictionary<string, string>
{
{ "0", "South Africa" },
{ "1", "Nigeria" },
{ "2", "Lybia"}
}
}
};
我正在尝试过滤到具有字母 r 的国家/地区。 这就是我试图让它看起来像过滤后的样子:
Dictionary<string, Dictionary<string, string>> countriesByContinentDictionary = new Dictionary<string, Dictionary<string, string>>
{
{
"Europe",
new Dictionary<string, string> {
{ "0", "France" },
{ "1", "Germany"},
{ "2", "Switzerland" }
}
},
{
"Asia",
new Dictionary<string, string>
{
}
},
{
"Africa",
new Dictionary<string, string>
{
{ "0", "South Africa" },
{ "1", "Nigeria" }
}
}
};
这是我目前的代码:
public static Dictionary<string, Dictionary<string, string>> GetRecordsContainingSubStringWithLambda(Dictionary<string, Dictionary<string, string>> originalNestedDictionary, string lambdaSubString)
{
var filteredNestedDictionary = Enumerable.Range(0, originalNestedDictionary.Count)
.Select(
row => Enumerable.Range(0, originalNestedDictionary.ElementAt(row).Value.Count)
.Select(col => originalNestedDictionary.ElementAt(row).Value.ElementAt(col))
.Where(keyValuePair => keyValuePair.Value != null && keyValuePair.Value.Contains(lambdaSubString))
.ToDictionary<string, string>(keyValuePair => keyValuePair.Key, keyValuePair => keyValuePair.Value)
).ToDictionary<string, Dictionary<string, string>>(keyValuePair => keyValuePair.Key, keyValuePair => keyValuePair.Value);
return filteredNestedDictionary;
}
但我收到以下错误:
error CS0029: Cannot implicitly convert type 'System.Collections.Generic.Dictionary<System.Collections.Generic.Dictionary<string, string>, string>' to 'System.Collections.Generic.Dictionary<string, System.Collections.Generic.Dictionary<string, string>>'
【问题讨论】:
标签: c# linq dictionary