You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中实现类似Excel VLOOKUP的区间匹配查询方法

实现方案:用内存数据集合+查询逻辑替代IF/Else

核心思路

把Excel里的区间映射数据转换成C#的内存数据结构,通过集合查询匹配HP对应的区间,完全不用嵌套IF/Else,也不需要依赖Excel程序。


步骤1:定义数据模型

先创建一个类对应Excel的每一行数据,存储区间上下限和空间系数:

public class MotorSpaceMapping
{
    public double LowHP { get; set; }
    public double HighHP { get; set; }
    public double SpaceFactor { get; set; }
}

步骤2:预加载数据

把Excel里的所有行数据整理成List<MotorSpaceMapping>,可以在窗体初始化时加载(如果需要动态更新,也可以用NPOI/EPPlus这类轻量库读取Excel文件到内存,全程不用启动Excel):

// 示例:直接把Excel数据写死到集合,或通过文件读取填充
private readonly List<MotorSpaceMapping> _motorSpaceData = new List<MotorSpaceMapping>
{
    new MotorSpaceMapping { LowHP = 0.5, HighHP = 1.0, SpaceFactor = 0.8 },
    new MotorSpaceMapping { LowHP = 1.0, HighHP = 2.0, SpaceFactor = 1.2 },
    new MotorSpaceMapping { LowHP = 2.0, HighHP = 5.0, SpaceFactor = 1.5 },
    // 补充其他区间数据...
};

步骤3:实现查询方法

用LINQ直接查询符合区间的项,返回对应空间系数:

public double GetSpaceFactor(double hp)
{
    // 根据需求调整区间边界逻辑,比如是否包含HighHP
    var match = _motorSpaceData.FirstOrDefault(m => hp >= m.LowHP && hp < m.HighHP);
    
    // 处理HP不在任何区间的情况,可返回默认值或抛出异常
    if (match == null)
    {
        throw new ArgumentOutOfRangeException(nameof(hp), "HP值不在已知区间范围内");
        // 或者返回默认值:return 0;
    }
    
    return match.SpaceFactor;
}

优化:大数据量用二分查找

如果区间数据量很大(比如上百条),先给集合按LowHP排序,再用二分查找提升效率:

// 初始化时先排序
_motorSpaceData.Sort((a, b) => a.LowHP.CompareTo(b.LowHP));

// 二分查找实现
public double GetSpaceFactorFast(double hp)
{
    int left = 0;
    int right = _motorSpaceData.Count - 1;
    
    while (left <= right)
    {
        int mid = (left + right) / 2;
        var current = _motorSpaceData[mid];
        
        if (hp >= current.LowHP && hp < current.HighHP)
        {
            return current.SpaceFactor;
        }
        else if (hp < current.LowHP)
        {
            right = mid - 1;
        }
        else
        {
            left = mid + 1;
        }
    }
    
    throw new ArgumentOutOfRangeException(nameof(hp), "HP值不在已知区间范围内");
}

内容的提问来源于stack exchange,提问作者Brandon G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:30:58