如何使用 c# 比较两个字典 'Dictionary 和 'Dict_Aggregate=

本文关键字:int string Dict Aggregate Dictionary 两个 字典 何使用 比较 | 更新日期: 2023-09-27 18:31:09

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

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

请指教。

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

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

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

将确定键是否匹配;如果要匹配值,则必须添加另一个子句并确定如何比较 int s 和 string s,如下所示:

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值是确切的数字,并且没有空格等。但是,如果需要,您可以对其进行优化。