我的目标是从与Foo
枚举条件匹配的foos列表中返回第一个Boo
项,如果没有项匹配,则应按示例中的Boo
值进行优先级排序条件,然后只返回第一项。
模型:
class Foo
{
E_Boo Boo { get; set; }
}
enum E_Boo
{
Undefined = 0,
Jessie = 1,
Abby = 2,
Felix = 3,
Lacey = 4,
Lucia = 5,
Anisa = 6
}
这是我尝试过的,它有效:
public Foo GetFooByBooPriority(IEnumerable<Foo> foos)
{
if(foos.Any(x => x.Boo == E_Boo.Abby))
return foos.First(x => x.Boo == E_Boo.Abby);
else if (foos.Any(x => x.Boo == E_Boo.Lacey))
return foos.First(x => x.Boo == E_Boo.Lacey);
else if (foos.Any(x => x.Boo == E_Boo.Lucia))
return foos.First(x => x.Boo == E_Boo.Lucia);
else if (foos.Any(x => x.Boo == E_Boo.Felix))
return foos.First(x => x.Boo == E_Boo.Felix);
else if (foos.Any(x => x.Boo == E_Boo.Anisa))
return foos.First(x => x.Boo == E_Boo.Anisa);
else if (foos.Any(x => x.Boo == E_Boo.Jessie))
return foos.First(x => x.Boo == E_Boo.Jessie);
else
return foos.First();
}
任何想法如何在性能和更简洁的代码方面改进此优先级检索器?
更新:
在优先级逻辑中需要与枚举E_Boo
定义脱钩,换句话说,如果将更改枚举定义,则优先级逻辑应保留为smae。
我想使实现与枚举值和名称脱钩