字典和Linq:过滤字典列表

时间:2017-07-21 13:05:48

标签: c# linq dictionary

我有一个声明 RegionGridvalues

的字典变量
json = Convert.ToString(modal.RegionGrid);
Dictionary<string, object> RegionGridvalues = serializer.Deserialize<Dictionary<string, object>>(json);

我有许多键,如R1_T11,R1_T12等,默认值为零。有一些非Initeger喜欢字符串,Bool等。 有些值也不为零,如4136,3122等。

enter image description here

我想要一个字典过滤,其中只包含非零值。 我认为Linq是最好的方式。但我是Linq的新手。任何人都可以帮我从这本字典中获取Non Zero值。

2 个答案:

答案 0 :(得分:0)

你真的需要用Newtonsoft或类似的东西来做这个,但是如果你不能这样做,那么以下可以用来过滤零值。

尝试 -

var results = RegionGridvalues.Where(k => k.Value.ToString() != "0");

答案 1 :(得分:0)

代码示例引出了整数是否作为对象存储的问题。它总是一个整数吗?如果是这样,我会建议:

        var RegionGridvalues = serializer.Deserialize<Dictionary<string, object>>(json)   //deserialize json
                                         .Where(kvp => (int)kvp.Value != 0)               //eliminate entries with 0 value
                                         .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); //convert results back into dictionary

where步骤具有一定的灵活性,具体取决于数据。另一种选择是转换为字符串并与&#34; 0&#34;进行比较。 (例如(kvp.Value?.ToString() ?? 0) != 0);如果没有将错误存储为整数,这可以防止错误。请注意空合并以防止空值。