【问题标题】:Is it possible to make a method that takes a Dictionary<TKey, IEnumerable<T>>?是否可以制作一个采用 Dictionary<TKey, IEnumerable<T>> 的方法?
【发布时间】:2019-04-03 17:50:01
【问题描述】:

是否可以创建一个方法,该方法采用具有泛型类型键和泛型 IEnumerable 值的字典?比如

private static bool AreDictionariesOfObjectAndListEqual<TKey, IEnumerable<T>>(Dictionary<TKey, IEnumerable<T>> dict1, Dictionary<TKey, IEnumerable<T>> dict2)
{
    var dict1String = string.Join(",",
                dict1.OrderBy(kv => kv.Key).Select(kv => kv.Key + ":" + string.Join("|", kv.Value.OrderBy(v => v))));
    var dict2String = string.Join(",",
                dict2.OrderBy(kv => kv.Key).Select(kv => kv.Key + ":" + string.Join("|", kv.Value.OrderBy(v => v))));

    return dict1String.Equals(dict2String);
}

相等代码直接来自这里的答案:https://stackoverflow.com/a/45606892/8657968

【问题讨论】:

    标签: c#


    【解决方案1】:

    你可以改用这样的东西:

    private static bool AreDictionariesOfObjectAndListEqual<TKey, TValue>(Dictionary<TKey, IEnumerable<TValue>> dict1, Dictionary<TKey, IEnumerable<TValue>> dict2)
    {
        var dict1String = string.Join(",",
                    dict1.OrderBy(kv => kv.Key).Select(kv => kv.Key + ":" + string.Join("|", kv.Value.OrderBy(v => v))));
        var dict2String = string.Join(",",
                    dict2.OrderBy(kv => kv.Key).Select(kv => kv.Key + ":" + string.Join("|", kv.Value.OrderBy(v => v))));
    
        return dict1String.Equals(dict2String);
    }
    

    【讨论】:

    • 我可以发誓我已经尝试过了,这就是为什么我如此困惑。成功了!
    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    相关资源
    最近更新 更多