如何将SQL表数据应用于Switch语句(JS/C#实现)
嘿,这需求很常见!我帮你整理了前端JavaScript和后端C#两种实现方案,优先推荐适配动态数据的映射方式,也提供了硬编码Switch的写法,你可以根据自己的场景选择:
前端JavaScript实现方案
方式1:对象映射(推荐,适合数据动态更新的场景)
如果你的SQL表数据可能会变动,用对象映射来实现等价于Switch的逻辑会更灵活,不用每次改数据都修改代码:
// 第一步:从后端API获取SQL表的映射数据(这里用模拟数据示例) async function fetchMappingData() { // 实际项目中替换成你的API地址 const response = await fetch('/api/mapping-data'); return await response.json(); } // 第二步:转换成键值对映射并实现匹配函数 async function getMatchedValue(inputValue) { const mappingList = await fetchMappingData(); // 将数组转换成{ column1: column2 }的键值对对象 const valueMap = mappingList.reduce((map, item) => { map[item.column1] = item.column2; return map; }, {}); // 匹配输入值,没有匹配时返回默认值 return valueMap[inputValue] || '未找到匹配值'; } // 使用示例 getMatchedValue(2).then(result => console.log(result)); // 输出 Chennai
方式2:硬编码Switch(适合数据固定不变的场景)
如果SQL表的数据不会改动,你可以先把数据导出,手动写成Switch语句:
function getMatchedValue(inputValue) { switch(inputValue) { case 1: return 'Hyderabad'; case 2: return 'Chennai'; case 3: return 'Bangalore'; default: return '未找到匹配值'; } } // 使用示例 console.log(getMatchedValue(3)); // 输出 Bangalore
后端C#控制器实现方案
方式1:字典映射(动态数据友好)
在C#中用字典来实现和Switch等价的逻辑,适配数据库数据的动态变化:
// 先定义对应SQL表的实体类 public class MappingItem { public int Column1 { get; set; } // 根据你的表字段类型调整,比如string public string Column2 { get; set; } } // 控制器中的实现 public class MappingController : ControllerBase { private readonly YourDbContext _dbContext; // 注入你的数据库上下文 public MappingController(YourDbContext dbContext) { _dbContext = dbContext; } [HttpGet("get-matched-value")] public IActionResult GetMatchedValue(int inputValue) { // 从数据库读取所有映射数据 var mappingItems = _dbContext.YourTableName.ToList(); // 转换成字典 var valueDict = mappingItems.ToDictionary(item => item.Column1, item => item.Column2); if (valueDict.TryGetValue(inputValue, out var matchedValue)) { return Ok(matchedValue); } return Ok("未找到匹配值"); } }
方式2:硬编码Switch(数据固定场景)
如果数据不会变动,直接写Switch语句即可:
[HttpGet("get-matched-value")] public IActionResult GetMatchedValue(int inputValue) { switch(inputValue) { case 1: return Ok("Hyderabad"); case 2: return Ok("Chennai"); case 3: return Ok("Bangalore"); default: return Ok("未找到匹配值"); } }
内容的提问来源于stack exchange,提问作者user8590818
相关产品推荐
相关产品推荐

