比较两个排序的词典

时间:2015-07-24 15:56:05

标签: c# dictionary compare

我有两个这样的词典:

            Dictionary<int, string> main = new Dictionary<int, string>();
        Dictionary<int, string> other = new Dictionary<int, string>();
        main.Add(0, "fruit;banana");
        main.Add(1, "fruit;apple");
        main.Add(2, "fruit;cherry");
        main.Add(3, "fruit;pear");

        other.Add(0, "fruit;blueberry");
        other.Add(1, "fruit;pear");
        other.Add(2, "fruit;orange");

我需要对这两个字典进行排序,在输出中我需要第三个字典,其中包含所有已排序的字典

1 个答案:

答案 0 :(得分:1)

虽然你不清楚你的问题你想要的第三个字典是什么样的,我猜你想要的是一个字典,其中的值是前两个字典的所有排序水果,键是简单地计算(如在前两个词典中)。

你可以制作这样的字典:

Dictionary<int, string> allFruits =
    main.Values.Concat(other.Values)
    .OrderBy(f => f)
    .Select((f, i) => new { fruit = f, index = i })
    .ToDictionary(o => o.index, o => o.fruit);

结果,基于您提供的mainother词典:

[0, "fruit;apple"]
[1, "fruit;banana"]
[2, "fruit;blueberry"]
[3, "fruit;cherry"]
[4, "fruit;orange"]
[5, "fruit;pear"]
[6, "fruit;pear"]

如果您不希望fruit;pear出现两次,可以在其中插入.Distinct()来电:

Dictionary<int, string> allFruits =
    main.Values.Concat(other.Values)
    .Distinct()
    .OrderBy(f => f)
    .Select((f, i) => new { fruit = f, index = i })
    .ToDictionary(o => o.index, o => o.fruit);