C#用于根据范围查找当前项的数据结构

C#用于根据范围查找当前项的数据结构,c#,algorithm,data-structures,C#,Algorithm,Data Structures,我正在寻找一个数据结构或确认一个不存在,您可以输入项目和一个数字值与该项目的eh开始是有效的 想象一下,你正试图找到高分的奖励 这些元素看起来像这样: 0-无 100-银星 300-金星 然后,我想根据我当前的分数快速评估我当前的奖励或任何一般项目。如果我通过270,我会得到银星 当我第一次必须实现类似的东西时,我使用了一个双工列表,第一个值是数字下限,第二个值是项目。这当然管用。当然,随着列表的增长,查找时间也会增加 我必须再次实现类似的东西,但是使用规范化的值。同样,我也可以做同样的事情,但

我正在寻找一个数据结构或确认一个不存在,您可以输入项目和一个数字值与该项目的eh开始是有效的

想象一下,你正试图找到高分的奖励

这些元素看起来像这样: 0-无 100-银星 300-金星

然后,我想根据我当前的分数快速评估我当前的奖励或任何一般项目。如果我通过270,我会得到银星

当我第一次必须实现类似的东西时,我使用了一个双工列表,第一个值是数字下限,第二个值是项目。这当然管用。当然,随着列表的增长,查找时间也会增加

我必须再次实现类似的东西,但是使用规范化的值。同样,我也可以做同样的事情,但是如果有更好更有效的方法使用树,请告诉我这个方向

不管结构是否正确,我都将为规范化和原始值搜索编写一个包装器

试试这个:

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);
var levels=new[]
{
新的{score=0,level=“nothing”},
新的{score=100,level=“silver”},
新的{score=300,level=“gold”},
};
var得分=270;

var level=levels.OrderBy(x=>x.score)。其中(x=>x.score我们谈论的星星有多少,5,50000,10000000。你是动态添加它们,还是经常添加它们,它们变化很大,还是静态添加。如果这是针对几个项目,你已经有了答案,你尝试过二进制搜索吗?我在想这样的答案,但我真的想添加图片:P upvoteThis会产生回答正确,但我的问题不是关于使用LINQ来解决这个问题,而是关于数据结构的效率。尽管如此,您的回答还是很有帮助的。谢谢。@user923-您不能对列表应用二进制搜索吗?