我有这样的结构:
static Dictionary<int, Dictionary<int, string>> tasks =
new Dictionary<int, Dictionary<int, string>>();
好像是这样
[1]([8] => "str1")
[3]([8] => "str2")
[2]([6] => "str3")
[5]([6] => "str4")
我想从此列表中获取所有 [8]
字符串,即 str1
+ str2
该方法应如下所示:
static List<string> getTasksByNum(int num){
}
我如何访问它?
最佳答案
使用 LINQ,您可以执行如下操作:
return tasks.Values
.Where(dict => dict.ContainsKey(8))
.Select(dict => dict[8])
.ToList();
虽然这很优雅,但 TryGetValue
模式通常比它使用的两个查找操作更可取(首先尝试 ContainsKey
,然后使用索引器获取值)。
如果这对你来说是个问题,你可以做类似的事情(使用合适的辅助方法):
return tasks.Values
.Select(dict => dict.TryGetValueToTuple(8))
.Where(tuple => tuple.Item1)
.Select(tuple => tuple.Item2)
.ToList();
关于c# - 通过键从字典中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7486488/