C# 写入Excel单元格时将关联Location整型ID转为对应字符串值的问题
问题根因
你代码中X.Location存储的是SubLocation对应的主键ID(整型值),直接调用ToString()只会将数字转为字符串格式,无法匹配到对应的地点名称。
解决方法
直接调用你已经封装好的Global.GetDetail()工具方法,传入X.Location的ID值获取对应的SubLocation实例,再读取你需要的字符串字段即可,同时要增加空值判断避免ID不存在时抛出空引用异常。
修改后的代码示例如下:
List<UserLicense> B = applicationDbContext.ToList(); foreach (var X in B) { // 根据存储的ID查询对应的地点详情 var subLocation = Global.GetDetail(X.Location); // 取值可根据需求替换为 LocationName(对应示例的Brazil)或 Name(对应示例的Di Janero) worksheet.Cells["H" + K].Value = subLocation?.LocationName ?? "未知地点"; K++; // 注意行号变量要正常自增,避免覆盖同一单元格 }
补充说明
如果你的UserLicense中List<SubLocation> Locations导航属性已经通过EF Core预加载了关联数据,也可以直接从该集合中匹配取值,不需要重复调用全局方法。
内容的提问来源于stack exchange,提问作者Momen Alnaser
相关产品推荐
相关产品推荐

