从字典中获取唯一值<string,ilist <object =“”>&gt; C#</串,>

时间:2014-05-09 16:40:46

标签: c# dictionary

我有一个包含

形式数据的字典
key ,  value
1   ,  1 0 1
       1 1 1

2   , 1 2 3
      4 5 6

3   , 1 0 1
      1 1 1 

 and so on.

我希望在其他字典中获得IList的唯一值以及新密钥。 任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

我不确定有更好的方法可以做到这一点,而不是:

var dict = new Dictionary<string, IList<int>>();

var uniques = new Dictionary<string, IList<int>>();

foreach (var kvp in dict)
{
    if(!uniques.Any(val => val.Value.SequenceEqual(kvp.Value)))
        uniques.Add(kvp.Key, kvp.Value);
}

答案 1 :(得分:0)

如何将您的值视为HashSet而不是IList。然后,您将能够使用相等比较器CreateSetComparer按值对字典进行分组。

  var dictionary = new Dictionary<string, IList<Object>>
                    {
                        {"1", new List<object> {1, 0, 1, 1, 1, 1}},
                        {"2", new List<object> {1, 2, 3, 4, 5, 6}},
                        {"3", new List<object> {1, 0, 1, 1, 1, 1}}
                    };
    var dictionaryHashSets = dictionary.ToDictionary(k=>k.Key, v=> new HashSet<Object>(v.Value));
    var reverseDictionary = dictionaryHashSets.GroupBy(pair => pair.Value, HashSet<Object>.CreateSetComparer()).ToDictionary(gk => gk.Key, gv => gv.Select(pair => pair.Key));