我正在寻找一个数据结构或确认不存在的结构,您可以在其中输入项目,并且与该项目的eh开头相关的数值有效。
想象一下,您正试图找出获得高分的奖励。
这些元素看起来像这样: 0-无 100-银星 300-金星
然后,我想根据我的当前分数快速评估我当前的奖励或任何常规项目。如果我通过270,我会获得银星。
当我第一次必须实现这样的东西时,我使用了一个二元组列表,第一个值是数字下限,第二个是项目。当然可以。但是当然,随着列表的增加,查找时间也会增加。
我必须再次实现与此类似但具有标准化值的东西。同样,我可以做同样的事情,但是如果有使用树的更好更好的方法,请指向该方向。
无论结构如何,我都会为标准化和原始值搜索编写一个包装。
答案 0 :(得分:1)
尝试一下:
var levels = new []
{
new { score = 0, level = "nothing" },
new { score = 100, level = "silver" },
new { score = 300, level = "gold" },
};
var score = 270;
var level = levels.OrderBy(x => x.score).Where(x => x.score <= score).Last().level;
Console.WriteLine(level);
这使我在控制台上silver
。