如何比较两个字典`Dictionary <string`,int =“”>和`Dict_Aggregate =`Dictionary <string`,string =“”>`使用c#</string`,> </string`,>

时间:2013-09-13 15:04:22

标签: c# dictionary

有没有办法比较Dict = Dictionary<string, int>和Dict_Aggregate = Dictionary<string, string>使用c#。 请注意,字典都生成相同的输出。 请建议。 目前我这样做:

bool dictionariesEqual = Dict.Keys.Count == Dict_Aggregate.Keys.Count && Dict.Keys.All(k => Dict_Aggregate.ContainsKey(k) && object.Equals(Dict_Aggregate[k], Dict[k]));

请建议。

1 个答案:

答案 0 :(得分:1)

您可能希望进行更广泛的比较,这取决于您是否关心值是否相同。

bool dictionariesEqual = Dict.Keys.Count == Dict_Aggregate.Keys.Count 
    && Dict.Keys.All(k => Dict_Aggregate.ContainsKey(k);

将确定密钥匹配;如果您想匹配这些值,则必须添加另一个子句并确定如何比较intstring,例如:

bool dictionariesEqual = Dict.Keys.Count == Dict_Aggregate.Keys.Count 
    && Dict.Keys.All(k => Dict_Aggregate.ContainsKey(k) 
    && Dict_Aggregate.All(v => 
      { int test; 
        return int.TryParse(v.Value, out test) 
          && Dict[v.Key].Equals(test); });

显然在最后一次值比较中存在一些边缘情况 - 它取决于string值是确切的数字,并且没有空格等。但是,如果需要,可以改进它。