C# 将状态值从int更改为string
我有一个status属性,在对象数组中具有C# 将状态值从int更改为string,c#,asp.net,.net,enums,asp.net-core-mvc,C#,Asp.net,.net,Enums,Asp.net Core Mvc,我有一个status属性,在对象数组中具有int值。下面是对象数组的输出 [ { "enterpriseServiceId": 1, "enterpriseServices": {}, "status": 3, "id": 1, "createdOn": "2017-12-29T17:58:15.4855946", "createdBy": "System", "modifie
int
值。下面是对象数组的输出
[
{
"enterpriseServiceId": 1,
"enterpriseServices": {},
"status": 3,
"id": 1,
"createdOn": "2017-12-29T17:58:15.4855946",
"createdBy": "System",
"modifiedOn": "2017-12-29T17:58:15.4855946",
"modifiedBy": "System"
},
{
"enterpriseServiceId": 2,
"enterpriseServices": {},
"status": 1,
"id": 2,
"createdOn": "2017-12-29T17:58:15.4855946",
"createdBy": "System",
"modifiedOn": "2017-12-29T17:58:15.4855946",
"modifiedBy": "System"
}
]
status
属性是枚举值类型。我试图将其转换为字符串值,以便在输出中返回时更易于读取
下面是我从SQLServer数据库获取数据的代码
枚举
namespace CoreLibrary.Models.Enums
{
public static class Common
{
public enum Status
{
Active = 1,
InActive,
Completed,
Failed,
InProgress,
Pause,
Resume,
Skip,
Running
}
}
}
实体模型:
namespace CoreLibrary.Models.Entities
{
public class Deployments : BaseProperties
{
public int EnterpriseServiceId { get; set; }
[ForeignKey("EnterpriseServiceId")]
public virtual EnterpriseServices EnterpriseServices { get; set; }
public Common.Status Status { get; set; }
}
}
[HttpGet("~/api/Deployments/GetWithJoins")]
public JsonResult GetWithJoins()
{
try
{
// includeList for including data from external tables (JOIN Query)
var includeList = new List<Expression<Func<Deployments, object>>>();
includeList.Add(d => d.EnterpriseServices);
IEnumerable<Deployments> result = _repository.GetByIdWithJoins(queryable: includeList).ToList();
return Json(result);
}
catch (Exception ex)
{
var innerException = ex.InnerException == null ? null : ex.InnerException.Message.ToString();
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json(new { status = "failed", message = ex.Message.ToString(), innerException = innerException });
}
}
从数据库检索数据的方法:
namespace CoreLibrary.Models.Entities
{
public class Deployments : BaseProperties
{
public int EnterpriseServiceId { get; set; }
[ForeignKey("EnterpriseServiceId")]
public virtual EnterpriseServices EnterpriseServices { get; set; }
public Common.Status Status { get; set; }
}
}
[HttpGet("~/api/Deployments/GetWithJoins")]
public JsonResult GetWithJoins()
{
try
{
// includeList for including data from external tables (JOIN Query)
var includeList = new List<Expression<Func<Deployments, object>>>();
includeList.Add(d => d.EnterpriseServices);
IEnumerable<Deployments> result = _repository.GetByIdWithJoins(queryable: includeList).ToList();
return Json(result);
}
catch (Exception ex)
{
var innerException = ex.InnerException == null ? null : ex.InnerException.Message.ToString();
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json(new { status = "failed", message = ex.Message.ToString(), innerException = innerException });
}
}
[HttpGet(“~/api/Deployments/GetWithJoins”)]
公共JsonResult GetWithJoins()
{
尝试
{
//includeList用于包含来自外部表的数据(联接查询)
var includeList=新列表();
includeList.Add(d=>d.EnterpriseServices);
IEnumerable结果=_repository.GetByIdWithJoins(queryable:includeList.ToList();
返回Json(结果);
}
捕获(例外情况除外)
{
var innerException=ex.innerException==null?null:ex.innerException.Message.ToString();
Response.StatusCode=(int)HttpStatusCode.BadRequest;
返回Json(new{status=“failed”,message=ex.message.ToString(),innerException=innerException});
}
}
result变量返回我在本文开始时共享的输出。我正在尝试将状态
转换为返回字符串
值,而不是int
我不确定这是否可能,或者这是将status
int输出为字符串值的正确方法
我在网上试过,但我还没有找到一个满足我要求的解决方案。如果你们能给我任何帮助,我将不胜感激。:) 调用时,ASP.NET使用其创建一个。JavaScriptSerializer
的默认配置将枚举转换为整数表示形式
我们可以将序列化程序配置为使用枚举的字符串表示形式。此处提供了有关如何执行此操作的详细信息:
如果这种方法没有吸引力,那么可以使用LINQ映射到匿名对象
虽然LINQ方法可以工作,但从长远来看,它可能会导致维护问题。您可以简单地将int转换为enum?正如已经在这里讨论过的:嗯,一是一个单一的整数到字符串。如何在不迭代每个对象的情况下转换对象数组以更新
状态
?您的类部署是内部生成的吗?这是我为模型创建的一个类。我希望这能回答这个问题?您可以简单地拥有一个字符串属性:publicstringstatustext{get{returnstatus.ToString();}}
,在这个classfirst方法中工作得非常好。我能够为状态
检索带有字符串值的json。也谢谢你的选择。