如何根据其他词典订购词典? C#

时间:2018-10-17 01:02:02

标签: c# linq dictionary

所以我想做的是根据另一个字典的(dict1)根据其键对字典(dict2)进行排序;这两个字典具有相同的值,但没有相同的键。 下面有一个图表可以直观地显示我要做什么。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用Linq通过一个字典在另一个字典中的值的索引来对其进行排序。可能有一种较短的方法,但这应该可行:

var dict1 = new Dictionary<int, string>
{
    {12, "hello"},
    {67, "green"},
    {29, "blue"},
    {15, "red"},
    {40, "house"}
};

var dict2 = new Dictionary<string, string>
{
    {"tree", "green"},
    {"person", "hello"},
    {"car", "red"},
    {"floor", "red"},
    {"dirt", "green"},
};

var ordered = dict2
    .OrderBy(d2Item => dict1.FirstOrDefault(d1Item => d1Item.Value == d2Item.Value).Key)
    .ToDictionary(item => item.Key, item => item.Value);