我有一个以下的枚举词典:
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]
可能未映射。
答案 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];
}