有没有办法比较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]));
请建议。
答案 0 :(得分:1)
您可能希望进行更广泛的比较,这取决于您是否关心值是否相同。
此
bool dictionariesEqual = Dict.Keys.Count == Dict_Aggregate.Keys.Count
&& Dict.Keys.All(k => Dict_Aggregate.ContainsKey(k);
将确定密钥匹配;如果您想匹配这些值,则必须添加另一个子句并确定如何比较int
和string
,例如:
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
值是确切的数字,并且没有空格等。但是,如果需要,可以改进它。