我仍然试图掌握LINQ,虽然我对更简单的功能有一点了解,但堆叠这些在一定程度上使我望而却步,我希望有人可以帮我一把。
我目前有一本有效的词典:
Dictionary<Type, Dictionary<int, EntityComponent>> ComponentSystems
我正在尝试编写一个方法,它将返回具有给定键的所有EntityComponent实例,也就是说,如果父词典包含两个嵌套词典,并且每个词组都有一个以“1”作为键的条目,该方法将返回与所述键匹配的值IEnumerable<EntityComponent>
我已经使用SelectMany
和所有其他各种LINQ命令进行了调整,但我仍然在努力解决这个问题。
作为另一个例子,我要说明我有以下设置:
Dictionary<object, Dictionary<int, string>> test =
new Dictionary<object, Dictionary<int, string>>();
Dictionary<int, string> test1 = new Dictionary<int, string>();
test1[1] = "test1-1";
test1[2] = "test1-2";
test[0] = test1;
Dictionary<int, string> test2 = new Dictionary<int, string>();
test2[1] = "test2-1";
test2[2] = "test2-2";
test[1] = test2;
鉴于我要找的密钥是'1',我需要生成一个linq语句,它将同时返回“test1-1”和“test2-1”。
答案 0 :(得分:2)
int key = 1;
var query = test.Values // select inner dictionaries
.Where(d => d.ContainsKey(key)) // which contain your key
.Select(d => d[key]); // and return value by key
返回:
"test1-1"
"test2-1"