我有以下词典:
public Dictionary<string,object> Items;
现在我需要获取Dictionary-item的 Value 来自特定类型的所有项目。 (例如&#34; int&#34;)
var intValues = Items.OfType<KeyValuePair<string,int>>
根本不起作用。
没有LinQ的代码就像:
var intValues=new Dictionary<string,int>()
foreach (var oldVal in Items) {
if (oldVal.Value is int) {
intValues.add(oldVal.Key, oldVal.Value);
}
}
(更新)我的例子应该显示基本的想法。但是如果可能的话,我会避免在结果中创建一个新词典。
答案 0 :(得分:7)
LINQ中<{1}}的直接翻译如下:
foreach
基本上,您首先过滤var intValues = Items.Where(item => item.Value is int)
.ToDictionary(item => item.Key, item => (int)item.Value);
item.Value
的位置,然后使用ToDictionary
从中创建字典,然后将这些值转换为int
确保生成的字典是int
。由于我们已经过滤了非整数,因此这种类型转换将始终成功。
答案 1 :(得分:4)
试试这个:
@media only screen and (max-width: 479px) {.dopsp-body {height: 50px }}
答案 2 :(得分:4)
您可以使用s3.listObjects(params, function (err, data) {
if (err)
console.log(err, err.stack); // an error occurred
var sortArray;
data.Contents.sort(function(a,b) {
return (b.LastModified > a.LastModified) ? 1 :
((a.LastModified > b.LastModified) ? -1 : 0);
});
for(var file of data.Contents){
if (file.Key.endsWith('.zip')) {
//extractData(file.Key);
break;
}
}
媒体资源上的is
运算符:
Value
如果您想在最后添加实际var intValues = Items.Where(x => x.Value is int);
,请添加:
Dictionary<string,int>
答案 3 :(得分:2)
你可以做到
var result = Items.Where(x => x.Value is int)
.ToDictionary(x => x.Key, x => x.Value);