我有一个声明 RegionGridvalues
的字典变量json = Convert.ToString(modal.RegionGrid);
Dictionary<string, object> RegionGridvalues = serializer.Deserialize<Dictionary<string, object>>(json);
我有许多键,如R1_T11,R1_T12等,默认值为零。有一些非Initeger喜欢字符串,Bool等。 有些值也不为零,如4136,3122等。
我想要一个字典过滤,其中只包含非零值。 我认为Linq是最好的方式。但我是Linq的新手。任何人都可以帮我从这本字典中获取Non Zero值。
答案 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
);如果没有将错误存储为整数,这可以防止错误。请注意空合并以防止空值。