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

基于C#类与List实现风险评分矩阵的双向查询可行性问询

问题解答

核心结论

当前基于RiskScore类与List<Coordinates>的设计完全可以实现你需要的双向查询功能,但直接用List做遍历查询在数据量较大时效率偏低,建议补充构建辅助索引来优化。

具体实现思路

需求a:根据riskvalue查coordX和coordY

遍历List<Coordinates>,找到RiskValue匹配的项,直接返回其CoordX和CoordY属性即可。示例代码片段:

public (string CoordX, string CoordY) GetCoordsByRiskValue(int targetValue)
{
    var match = coordinatesList.FirstOrDefault(c => c.RiskValue == targetValue);
    return match != null ? (match.CoordX, match.CoordY) : (null, null);
}

需求b:根据coordX和coordY查riskvalue和RiskRatingKey

遍历List<Coordinates>,匹配CoordX和CoordY的组合,返回对应的属性。示例代码片段:

public (int RiskValue, string RiskRatingKey) GetRiskInfoByCoords(string coordX, string coordY)
{
    var match = coordinatesList.FirstOrDefault(c => 
        string.Equals(c.CoordX, coordX, StringComparison.OrdinalIgnoreCase) &&
        string.Equals(c.CoordY, coordY, StringComparison.OrdinalIgnoreCase));
    return match != null ? (match.RiskValue, match.RiskRatingKey) : (-1, null);
}

优化建议

如果你的风险矩阵数据是固定的、不会频繁变动,建议在初始化时构建两个字典作为索引:

  • 一个Dictionary<int, Coordinates>,以RiskValue为键,存储对应坐标信息
  • 一个Dictionary<(string, string), Coordinates>,以(CoordX, CoordY)元组为键,存储对应风险信息

这样查询时可以直接通过键值对快速获取,避免遍历整个List,大幅提升查询效率。示例初始化代码:

private Dictionary<int, Coordinates> _valueToCoordMap;
private Dictionary<(string, string), Coordinates> _coordToValueMap;

public void InitializeIndexes(List<Coordinates> coords)
{
    _valueToCoordMap = coords.ToDictionary(c => c.RiskValue);
    _coordToValueMap = coords.ToDictionary(c => (c.CoordX, c.CoordY));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:50:31