我有两个这样的词典:
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");
我需要对这两个字典进行排序,在输出中我需要第三个字典,其中包含所有已排序的字典
答案 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);
结果,基于您提供的main
和other
词典:
[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);