我有以下结构
public struct Colors
{
public double MinV;
public double MaxV;
public string color;
}
List<Colors> ColorValues = new List<Colors>();
我需要检索具有位于Minv和Maxv之间的值的元素的颜色。
我的工作如下
i=0;
while (i < ColorValues.Count)
{
if (value> ColorValues[i].MinV && value< ColorValues[i].MaxV)
Color=ColorValues[i].color;
i++;
}
我需要用快速搜索方式替换这个循环。
答案 0 :(得分:2)
使用LINQ:
如果您需要符合条件的所有结构:
var allThatFitsCriteria = ColorValues.Where(x => value > x.MinV && value < x.MaxV);
如果您只需要第一个(如果存在):
var firstThatFitsCriteriaOrNull = ColorValues.FirstOrDefault(x => value > x.MinV && value < x.MaxV);
答案 1 :(得分:0)
一旦找到了您正在寻找的内容
,优化就会爆发i=0;
while (i < ColorValues.Count)
{
if (value> ColorValues[i].MinV && value< ColorValues[i].MaxV)
{
Color=ColorValues[i].color;
break;
}
i++;
}