从有序字典中获取最高元素

时间:2018-03-01 09:58:33

标签: c#

我有一个以下的枚举词典:

async

现在我收集了一些水果:await我希望返回最重要Task的{​​{1}} - 在这种情况下private readonly SortedDictionary<Fruit, Vitamin> mapping = new SortedDictionary<Fruit, Vitamin> { { Fruit.Apple, Vitamin.A}, { Fruit.Banana, Vitamin.B}, { Fruit.Orange, Vitamin.C} };

词典中水果的顺序很重要。某些[Fruit.Orange, Fruit.Plum, Fruit.Banana]可能未映射。

3 个答案:

答案 0 :(得分:2)

这样的事情可以解决问题:

SortedDictionary<Fruit, Vitamin> mapping = new SortedDictionary<Fruit, Vitamin>
{
    { Fruit.Apple, Vitamin.A},
    { Fruit.Banana, Vitamin.B},
    { Fruit.Orange, Vitamin.C}
};

List<Fruit> fruits = new List<Fruit>() { Fruit.Orange, Fruit.Banana };
var vit = mapping.First(pair => fruits.Contains(pair.Key)).Value;

答案 1 :(得分:1)

如果我理解正确,你想从映射字典中找到第一个与你的水果列表相匹配的维生素(例如橙子,香蕉)。
像这样的东西?

 var fruits = new[] { Fruit.Orange, Fruit.Banana };

 var priority = mapping.First(t => fruits.Contains(t.Key)).Value; //B

 fruits = new[] { Fruit.Banana, Fruit.Orange, Fruit.Apple };
 priority = mapping.First(t => fruits.Contains(t.Key)).Value; //A

答案 2 :(得分:0)

怎么样:

            if (mapping.Any())
            {
// You might need to tell Max how to do it
                var entry = mapping.Keys.Max();
                return mapping[entry];
            }