LinQ of Value in Value

时间:2017-04-25 13:01:34

标签: c# linq

我有以下词典:

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);
  }
}

(更新)我的例子应该显示基本的想法。但是如果可能的话,我会避免在结果中创建一个新词典。

4 个答案:

答案 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);