我不是最好的lambda可以任何人教我如何使用字符数组从字典中选择项目。
说我有一本字典;
Dictionary<char, int> someDictionary:
我有一个字符数组;
char[] someCharacterArray;
如何使用存储在char数组中的键集合从字典中选择项目;
someOtherDictionary = someDictionary.select( d =>
someCharacterArray.contains(d.key)).toDictionary();
我知道这当然不起作用,但它展示了我想要的东西。
希望我的问题很清楚,但我整夜都很清醒所以请对我温柔:)
提前谢谢, 达伦。答案 0 :(得分:2)
如果要检查char是否包含在Dictionary中。
使用where
方法
ToDictionary
应设置key
和value
Func
代理
根据你的问题,你可能想要这样。
Dictionary<char, int> someOtherDictionary = someDictionary
.Where(d => someCharacterArray.Contains(d.Key))
.ToDictionary(o=> o.Key, o=>o.Value);
修改强>
这在数据结构中会更快。 (感谢@TypeIA)
Dictionary<char, int> someOtherDictionary = someCharacterArray
.Where(ch => someDictionary.ContainsKey(ch))
.Select(ch => new { key = ch, value = someDictionary[ch] })
.ToDictionary(o => o.key, o => o.value);
答案 1 :(得分:0)
此类问题需要Join。
Dictionary<char, int> someDictionary = new Dictionary<char,int>
{
{'A',1},
{'B',2},
{'C',3},
{'D',4}
};
char[] someCharacterArray = new [] {'A','B','C','E'};
var filteredDictionary = someDictionary
.Join
(
someCharacterArray,
d => d.Key,
c => c,
(d,c) => new { Key = d.Key, Value = d.Value}
)
.ToDictionary
(
k => k.Key,
v => v.Value
);
Console.WriteLine(string.Join("\r\n", filteredDictionary.Select(d => string.Format("{0}={1}", d.Key, d.Value))));
输出:
A=1
B=2