如何使用 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]));
请指教。
您可能希望进行一些更广泛的比较,这取决于您是否关心值是否相同。
这
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
值是确切的数字,并且没有空格等。但是,如果需要,您可以对其进行优化。